我有2個表格:一個叫做喜歡飲酒者和他們喜歡的啤酒列。另一個叫賣出欄的酒吧名稱和他們賣的啤酒。初學者SQL查詢邏輯
我有一個艱難的時間與特定查詢:
"Drinkers who like every beer served by Bobbys"
我已經通過以下(有瑕疵)SQL查詢工作:
Select distinct a.drinker
from likes a
where exists
(
select *
from likes b, sells t
where a.drinker = b.drinker
and a.beer = t.beer
and t.bar = 'Bobbys'
);
但這個查詢返回誰喜歡一些飲酒者由Bobbys供應啤酒,不是所有的啤酒。只要飲酒者喜歡Bobbys供應的啤酒,它的名字就會被返回,這不是該聲明所要求的。
我很難在邏輯上改變這個查詢,只包括那些喜歡酒吧Bobbys供應的所有啤酒的飲用者,而不僅僅是一些。
任何幫助將不勝感激。謝謝。
MySQL不支持公共表表達式,但如果你重寫它使用派生表,將工作。 – jpw
好點。我沒有意識到這是在MySQL上。 –
請參閱:http://www.sqlfiddle.com/#!9/95fdd9/3 – jpw