Соедините три таблицы A, B, C и верните общее в A в mysql - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу объединить ниже три таблицы A, B, C и вернуть только общую (затененную) часть таблицы A

A
-------
ID, Name

B
-------
ID, ORG

C
--------
ID, DEP

enter image description here

Пожалуйста, предоставьте простой запрос на присоединение

Ответы [ 2 ]

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

Требуется left join, начинающийся с A, а затем некоторая фильтрация:

select . . .
from a left join
     b
     on . . .  left join
     c
     on . . .
where b.? is not null or c.? is not null;

? - это либо столбцы, используемые в join s, либо первичные ключи в соответствующих таблицах.

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

Я понимаю, что вам нужны строки из a, чьи id могут быть найдены в b или c.

Это звучит как два exists подзапроса:

select a.*
from a
where 
    exists (select 1 from b where b.id = a.id)
    or exists (select 1 from c where c.id = a.id)

Если вам также нужны столбцы из таблиц b или c, вы можете использовать вместо них два left joins с where условие, обеспечивающее успешное выполнение хотя бы одного из соединений:

select a.*, b.org, c.dept
from a
left join b on b.id = a.id
left join c on c.id = a.id
where b.id is not null or c.id is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...