MySQL关系划分

标签 mysql relational-division

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

对于哪些人来说,有一家餐厅,提供他们最喜欢的所有啤酒。

(是的,我们学校里确实有这个:D)

我有 2 个可以使用的表:

  • 表1:Favoritebeer(名字、姓氏、啤酒名)
  • 表2:OnStock(啤酒名称、餐厅、数量)

我的解决方案是:OnStock % Favouritebeer

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

最佳答案

尝试一下:

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 |

fiddle here .

关于MySQL关系划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20302581/

相关文章:

mysql - 如何查找列表/集合是否包含在另一个列表中

mysql - 使用存储过程(mysql)内查询中的值进行操作

mysql - 大查询 : Join single latest row from second table

sql - 从 NOT EXISTS 转换为 NOT IN

mysql - 使用MySQL进行关系划分

mysql - 用于查找共享完全相同的一组值的对的 SQL 查询

MYSQL - 排序依据和限制 : Different result when using variable or constant

mysql - SQL查询查找下一个版本号

mysql - django.db.utils.IntegrityError : 1452 'Cannot add or update a child row: a foreign key constraint fails 错误

MySql关系除法内连接语法超过3个表