Разработка запроса для отображения строк, которые не равны - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть 2 таблицы

Таблица 1:

enter image description here

Таблица 2:

enter image description here

Я хочу, чтобы в моем запросе отображались все строки, которые являются необычными между двумя таблицами в этом формате:

Ожидаемый результат:

enter image description here

Любые идеи будут высоко оценены! Я пытался использовать UNION, как предлагалось ранее, но он не дал желаемого результата.

1 Ответ

0 голосов
/ 22 апреля 2020

Я не могу сделать это в 1 запросе, но я могу сделать это в нескольких !!

Во-первых, создайте запрос объединения (Query1), который объединяет элементы в таблице 1, которые не отображаются в таблица 2, а также те элементы в таблице 2, которые не отображаются в таблице 1. Ваш SQL должен выглядеть следующим образом:

SELECT T2.ID
FROM Table2 T2 LEFT JOIN Table1 T1 ON T2.[ID] = T1.[ID]
WHERE (((T1.ID) Is Null))
UNION SELECT T1.ID
FROM Table1 T1 LEFT JOIN Table2 T2 ON T1.[ID] = T2.[ID]
WHERE (((T2.ID) Is Null));

Ваш второй запрос (Query2) затем основывается на этом запросе, объединенном с и Table1 и Table2, показывая все записи из запроса и любые записи из этих таблиц, где идентификаторы совпадают. Ваш SQL должен выглядеть следующим образом:

SELECT Q1.ID, T1.holiday AS H1, T2.Holiday AS H2
FROM Table2 T2 RIGHT JOIN (Table1 T1 RIGHT JOIN Query1 Q1 ON T1.ID = Q1.ID) ON T2.ID = Q1.ID;

Затем создайте запрос объединения (Query3) на основе таблиц Table1 и Table2:

SELECT T1.ID FROM Table1 T1
UNION SELECT T2.ID FROM Table2 T2;

Затем создайте четвертый запрос (Query4) основанный на Query3, соединенный с Table1 и Table2, где Table1.Holiday <> Table2.Holiday:

SELECT Q3.ID, T1.holiday AS H1, T2.Holiday AS H2
FROM Table2 T2 RIGHT JOIN (Table1 T1 RIGHT JOIN Query3 Q3 ON T1.ID = Q3.ID) ON T2.ID = Q3.ID
WHERE T1.Holiday<>T2.Holiday

Наконец, создайте запрос объединения на Query2 и Query4:

SELECT ID, H1, H2 FROM Query2
UNION SELECT ID, H1, H2 FROM Query4

This Затем вы должны получить желаемый результат:

enter image description here

Хотя в SQL может быть более простой способ сделать это .......

С уважением,

...