Как сравнить две пары из одной таблицы с двумя парами из другой таблицы на MySQL - PullRequest
1 голос
/ 22 апреля 2020

Я хочу сравнить оба значения из следующих таблиц.

Арларп

+------+--------+
|ARLID | ARPID  |
+------+--------+
|  AA  | AIA    |
|  OA  | AIA    |
|  AA  | ATL    |
|  AA  | DFW    |
|  AA  | LAX    |
|  DL  | ORD    |
|  EK  | ORD    |
|  AC  | YYZ    |
+------+--------+

Полет

+------+---------+----------+
| ARLID| ARPID_1 | ARPID_2  |
+------+---------+----------+
|  AA  |   ATL   |   DFW    |
|  AA  |   DFW   |   ATL    |
|  UA  |   ORD   |   DFW    |
+------+---------+----------+

Из Арларпа мы имеем существующие пары значений. Я хочу найти пропущенные пары значений Arlarp из Flight, которые не существуют в Flight при сравнении ARLID полета с ARPID_1 и ARPID_2.

Вот какой должен быть результат:

+------+---------+
| ARLID| ARPID   |
+------+---------+
| UA   |  ORD    |
+------+---------+
| UA   |  DFA    |
+------+---------+

1 Ответ

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

Один из вариантов - отключить таблицу flight с помощью union all, а затем извлечь строки, которых нет в alarp, с помощью not exists:

select f.*
from (
    select arlid, arpid_1 arpid from flight
    union all select arlid, arpid_2 from flight
) f
where not exists (select 1 from alarp a where a.arlid = f.arlid and a.arpid = f.arpd)
...