У меня есть стороннее приложение, которое генерирует данные в несколько отдельных таблиц на основе выпуска. Формат данных остается согласованным, поэтому объединения могут выполняться на разных типах таблиц.Объединение наборов результатов из двух союзов в MySQL
Я хотел бы включить поля из двух объединений в один результирующий набор данных.
Первый союз является перечень используемого оборудования и производится с помощью следующего оператора:
SELECT *
FROM (SELECT * FROM PMT_EQUIPMENT_USED_OLD
UNION
SELECT * FROM PMT_EQUIPMENT_USED_X
) AS U
WHERE U.GRID_EQUIPMENT_ID IS NOT NULL AND U.APP_STATUS <> 'CANCELLED' ORDER BY U.APP_NUMBER, U.ROW
Там может быть несколько записей таблицы для каждой единицы оборудования в этой таблице.
Вот структура таблицы:
Field,Type,Null,Key,Default
APP_UID,varchar(32),NO,PRI,null
APP_NUMBER,int(11),NO,,null
APP_STATUS,varchar(10),NO,,null
ROW,int(11),NO,PRI,null
GRID_EQUIPMENT_ID,int(11),YES,,null
GRID_EQUIPMENT_ID_LABEL,varchar(64),YES,,null
Второй союз является отчет об инвентаризации производится с помощью следующего оператора:
SELECT *
FROM (SELECT * FROM PMT_RPT_OLD
UNION
SELECT * FROM PMT_RPT_X
) AS A
ORDER BY A.APP_NUMBER
Вот структура таблицы:
Field,Type,Null,Key,Default
APP_UID,varchar(32),NO,PRI,null
APP_NUMBER,int(11),NO,,null
APP_STATUS,varchar(10),NO,,null
PROJECT_TITLE,varchar(255),YES,,null
PROJECT_CHARTER_NUMBER,varchar(32),YES,,null
COMPANY_CITY,varchar(32),YES,,null
COMPANY_COUNTRY,varchar(32),YES,,null
COMPANY_NAME,varchar(255),YES,,null
PROJECT_CHARTER_CLIENT_TYPE_LABEL,varchar(32),YES,,null
PROJECT_CHARTER_CLIENT_SECTOR_OTHER,varchar(255),YES,,null
PROJECT_CHARTER_CLIENT_SECTOR_LABEL,varchar(32),YES,,null
PROJECT_CHARTER_START_DATE,varchar(10),YES,,null
REQUEST_DATE,varchar(10),YES,,null
INQUIRY_DIV,varchar(32),YES,,null
CLIENT_CALLBACK_EXPLAIN,varchar(255),YES,,null
CLIENT_CALLBACK_LABEL,varchar(32),YES,,null
CLIENT_SURVEY_LABEL,varchar(32),YES,,null
PROJECT_CLOSEOUT_FEEDBACK_LABEL,varchar(32),YES,,null
PROJECT_CLOSEOUT_SURVEY_COMMENTS,varchar(255),YES,,null
PROJECT_COMPLETION_SIGNOFF_COMMENTS_PM,varchar(255),YES,,null
PROJECT_LOST_SIGNOFF_COMMENTS_PM,varchar(255),YES,,null
Я хотел бы включить поля из таблицы отчетов в список оборудования, где APP_UID идентичен.
Задача: данные постоянно обновляются, и я передаю запрос инструменту отчетности, поэтому я ограничен одним утверждением.
Есть ли способ объединить два набора таблиц и присоединиться к ним с помощью одного утверждения? Если нет, есть ли альтернативный подход, который я должен рассмотреть?
Любые советы были бы оценены!
Можете ли вы показать структуру таблицы для таблиц, участвующих в два запроса? Кстати, вы можете отбросить подзапросы, а вместо этого просто «UNION» вместе два оператора select на одном уровне.Это также должно значительно ускорить работу. –
какая колонка, которая связывает эти 2 таблицы друг с другом? – Beginner
См. Http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql- query – Strawberry