Как запросить, чтобы найти, все ли строки в одной таблице совпадают с набором строк в другой? - PullRequest
1 голос
/ 30 апреля 2019

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

EXPERTISE
EID,SCODE
101,4001
101,4002
101,4003
101,4004
101,4005
101,4006
102,4002
102,4003
102,4006
103,4001
103,4006
103,4004
104,4004
104,4006
105,4002
105,4003
105,4004
105,4006
106,4001
106,4002
106,4003
106,4004
106,4005
106,4006

и

SPECIALTY

SCODE,SNAME
4001,Cardiology
4002,Pediatrics
4003,Oncology
4004,Psychiatry
4005,Opthamology
4006,Internal

Как мне сформулировать запрос, который возвращает EID, которые специализируются на КАЖДОМспециальность?

Ответы [ 2 ]

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

Я думаю, что самый простой метод - это агрегирование и подсчет:

select e.eid
from expertise e
group by e.eid
having count(*) = (select count(*) from specialties);

Это предполагает, что в таблицах нет дубликатов, что представляется разумным, исходя из ваших данных выборки. Если есть дубликаты, вы можете просто использовать count(distinct) вместо count(*).

0 голосов
/ 30 апреля 2019
SELECT EID
FROM EXPERTISE
GROUP BY EID
HAVING COUNT(SCODE) = (SELECT COUNT(*) FROM SPECIALTY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...