Я хочу объединить две таблицы с разными столбцами. Причина в том, что я использую построитель отчетов (http://wpreportbuilder.com/), который поддерживает только один источник базы данных и один шаблон .docx.
Первая таблица:
CLIENT DATE TITLE NAME SOLUTION
ABC 2019-03-01 title123 compA fix1234
ABC2 2019-03-01 title124 compB fix12345
Вторая таблица (может иметь больше столбцов):
CLIENT DATE CUSTOMER REPORT PHONE
ABC3 2019-03-01 abc PDF 1234
Желаемый результат
CLIENT DATE TITLE NAME SOLUTION CUSTOMER REPORT PHONE
ABC 2019-03-01 title123 compA fix1234
ABC2 2019-03-01 title123 compB fix12345
ABC3 2019-03-01 abc PDF 1234
Таким образом, я могу легко использовать свой шаблон .docx с {title.all} , {name.all}, {report.all} и автоматически импортировать значения из базы данных и вставлять их обратно в документ Word.
Я могу легко сделать это, если количество столбцов совпадает, но если количество столбцов не совпадает (например, мой код ниже), он возвращает «ошибку несоответствия».
Мой код:
SELECT
client AS Client,
date as "Date Scanned",
scanner AS Scanner,
risk AS Risk,
host AS Host,
name AS Title,
solution AS Solution
FROM sss1_latest
WHERE risk regexp "High"
UNION
SELECT
client AS Client,
date as "Date Scanned",
Recommendation AS Solution
FROM sss2_latest
WHERE Recommendation regexp "fix1"
Приведенный выше код не отражает мою первую/вторую таблицу выше. Это было просто для объяснения.






Все запросы в UNION должны выбирать одинаковое количество столбцов. Вы можете выбрать NULL или '' в качестве заполнителей для столбцов, которые существуют только в другой таблице.
SELECT
client AS Client,
date as "Date Scanned",
scanner AS Scanner,
risk AS Risk,
host AS Host,
name AS Title,
solution AS Solution,
'' AS Customer,
'' AS Report,
'' AS Phone
FROM sss1_latest
WHERE risk regexp "High"
UNION
SELECT
client AS Client,
date as "Date Scanned",
'' AS Scanner,
'' AS Risk,
'' AS Host,
'' AS Title,
'' AS Solution,
Customer,
Report,
Phone
FROM sss2_latest
WHERE Recommendation regexp "fix1"