SQL: соединение внутреннего соединения - PullRequest
0 голосов
/ 30 апреля 2019

Я новичок в SQL. У меня есть 3 таблицы (A, B и C), и я хочу извлечь только ту часть A, которая является частью B или C.

Вот изображение того, что я хочу извлечь (красным): enter image description here

Я знаю, что пересечение между A и C получается следующим образом:

A inner join C on #the keys

и между А и В:

A inner join B on #the keys

Мой вопрос: как соединить / добавить эти два внутренних соединения?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Я бы использовал exists:

select . . . 
from a
where exists (select 1 from b where b.? = a.?) or
      exists (select 1 from c where b.? = a.?);

Если вам нужны столбцы из всех таблиц, используйте left join и используйте выражение where:

select . . .
from a left join
     b
     on . . . left join
     c
     on . . .
where c.? is not null or b.? is not null;
0 голосов
/ 30 апреля 2019

Я наконец нашел, как это сделать ... И это очень легко и быстро:

SELECT ... FROM A
INNER JOIN B ON ....

UNION

SELECT ... FROM A 
INNER JOIN C ON ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...