SQL-запрос (JOIN?) - PullRequest
       5

SQL-запрос (JOIN?)

0 голосов
/ 07 ноября 2018

Добрый день, я бы хотел сомневаться в запросе SQL.

В примере у меня есть три таблицы:

Table A | Table B | Table AB

Таблица AB - это соединение таблиц A и B.

Я хотел бы знать ВСЕ, что у вас есть в Таблице A и B, что у вас НЕ в Таблице AB.

Извините за английский "google translate"

[EDIT]

Следуя советам, получить результат со всем, что у вас есть в Таблице A и Таблице B, которого у вас нет в Таблице AB, было бы так:

PS: сейчас не могу проверить, я в метро

SELECT A.ID, B.ID 
FROM TABLE A (NOLOCK), TABLE B (NOLOCK)
WHERE A.ID = B.ID
AND NOT EXISTS (SELECT 1 FROM TABLE AB (NOLOCK) 
                WHERE A.ID = AB.ID)
AND NOT EXISTS (SELECT 1 FROM TABLE AB (NOLOCK) 
                WHERE B.ID = AB.ID)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Я бы использовал левое внешнее объединение вместо EXISTS, большую часть времени я нахожу это быстрее и более читабельным.

Что-то вроде:

SELECT a.* 
FROM TABLE_A a
LEFT OUTER JOIN TABLE_AB ab on ab.ID = a.ID
WHERE ab.ID IS NULL

UNION 

SELECT b.*
FROM TABLE_B b
LEFT OUTER JOIN TABLE_AB ab on ab.ID = b.ID
WHERE ab.ID IS NULL
0 голосов
/ 07 ноября 2018

Типичный подход к этой проблеме будет использовать cross join и left join:

select a.*, b.*
from a cross join
     b left join
     ab
     on a.a_id = ab.a_id and b.b_id = ab.b_id
where ab.a_id is null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...