Подразделение SQL, использующее 'не существует' в MySQL - PullRequest
2 голосов
/ 01 декабря 2008

У меня есть следующая таблица:


'committee' table

commname    profname
========================
commA       bill
commA       jack
commA       piper
commB       bill
commB       piper

и я пытаюсь найти профессоров, которые есть в каждом комитете, в котором есть «Пайпер» (ответ должен быть пайпер и счет):

У меня следующий запрос на разделение SQL, но он неправильный, и я не могу понять, в чем проблема (не возвращает счет, просто piper):


select b.profname
from committee b
where not exists 

(select commname
from committee a
where profname = 'piper' and not exists 

(select commname
from committee
where a.profname=b.profname ))

Может ли кто-нибудь помочь мне с этим? Спасибо,

1 Ответ

8 голосов
/ 01 декабря 2008

Ваш самый внутренний выбор не использует ничего из себя в предложении where, поэтому он всегда находит что-то для piper. Попробуйте

select distinct b.profname from committee b
where not exists (
    select commname from committee a
    where a.profname = 'piper' and not exists  (
        select commname from committee c
        where c.profname=b.profname and c.commname=a.commname
    )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...