我很难解决这个问题:
那里有一家餐厅,供应所有他们最喜欢的啤酒。
(是的,我们实际上在学校有这个:D)
我有2个可以使用的表:
我的解决方案是:OnStock%Favoritebeer
在MySQL中没有像DIVISION这样的东西。我有什么想法可以解决这个问题?我在维基百科上发现了以下内容:http://en.wikipedia.org/wiki/Relational_algebra#Division_.28.C3.B7.29这正是我需要的,但我很难在SQL中翻译它。
编辑:
此处示例数据:http://www.sqlfiddle.com/#!2/34e00
结果应为:
Bucher Rolf
Mastroyanni Pepe
Meier Hans
Meier Hanspeter
Meier Hansruedi
Müller Heinrich
Peters Peter
Zarro Darween
答案 0 :(得分:4)
尝试一下:
SELECT DISTINCT fb1.name, fb1.surname FROM favoriteBeer fb1
JOIN stock s ON fb1.beerName = s.beerName
GROUP BY fb1.name, fb1.surname, s.restaurant
HAVING COUNT(*) = (
SELECT COUNT(*) FROM favoriteBeer fb2
WHERE fb1.name = fb2.name AND fb1.surname = fb2.surname
)
输出:
| NAME | SURNAME |
|-------------|-----------|
| Bucher | Rolf |
| Mastroyanni | Pepe |
| Meier | Hans |
| Meier | Hanspeter |
| Meier | Hansruedi |
| Müller | Heinrich |
| Peters | Peter |
| Zarro | Darween |
小提琴here。