MySQL 关系划分

Chr*_*ris 2 mysql relational-division

我在解决一项练习时遇到困难:

有一家餐厅,供应他们最喜欢的啤酒。

(是的,我们实际上在学校有这个:D)

我有 2 个可以使用的表:

  • 表 1:最喜欢的啤酒(名称、姓氏、啤酒名称)
  • 表 2:OnStock(啤酒名称、餐厅、数量)

我的解决方案是: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
Run Code Online (Sandbox Code Playgroud)

Mos*_*cho 5

试试这个:

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
)
Run Code Online (Sandbox Code Playgroud)

输出:

|        NAME |   SURNAME |
|-------------|-----------|
|      Bucher |      Rolf |
| Mastroyanni |      Pepe |
|       Meier |      Hans |
|       Meier | Hanspeter |
|       Meier | Hansruedi |
|      Müller |  Heinrich |
|      Peters |     Peter |
|       Zarro |   Darween |
Run Code Online (Sandbox Code Playgroud)

在这里摆弄。