查询MySQL的多对多关系

时间:2016-01-15 03:10:37

标签: mysql

好的,我会尽力解释这种情况:

我有一张桌子,比如杯子。我有另一张桌子液体。他们之间存在着多对多的关系。

  • idcup
  • 材料

液体

  • idliquid
  • 液体

Cup_Has_Liquid

  • cup_idcup
  • liquid_idliquid

示例:杯子可以有“水”,“牛奶”,“啤酒”等。

我如何选择同时具有“牛奶”和“水”的杯子?

谢谢

2 个答案:

答案 0 :(得分:0)

使用连接表。

这是一张中间的桌子,是两者之间的混合体。 它将有一个复合主键,这两个键链接到您尝试加入的表上的每个主键。

Liquids表包含LiquidID,因为它是PK。 Cups表包含CupID,因为它是PK。

在中间你有一个Lines表,它有一个复合主键。 该表中的键是:

LiquidID&丘比特。

然后,您可以将您的加入表中的Liquid ID链接到您的Liquid表,并对其他键转到杯子时执行相同操作。 然后,您可以从连接表中引用液体ID和CupID。

我希望这可以解决它,这是一个非常令人困惑的话题。

修改: 有关信息,请参阅此链接。 :)

http://www.joinfu.com/2005/12/managing-many-to-many-relationships-in-mysql-part-1/

修改2

连接表可能类似于液体线,您的查询就是这样的。

选择* FROM liquidLines,其中CupID = 1 AND LiquidID = 1或CupID = 1 AND LiquidID = 2

答案 1 :(得分:0)

使用此子查询: -

"选择*从杯子里面选择(选择液体名称='牛奶'和'水'); "

名称是表格中的一列"液体"。

我想应该做的工作:)

度过愉快的一天。