我有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