gpt4 book ai didi

mysql - 使用 JOIN 和 HABTM 关联连接三个表

转载 作者:行者123 更新时间:2023-11-29 08:04:14 24 4
gpt4 key购买 nike

我有 3 个表项、特征、item_to_characteristics,其中 item_to_characteristics 是一个中间表,它保持 2 个表(项 <-> 特征)之间的 HABTM 关联。

项目表有id|title|description

特征表有id|name|pic_path

item_to_characteristic 具有 id|item_id|characteristic_id

例如:对于 id 25 的项目,我想找到它的所有特征。

表 item_to_characteristics 看起来像这样:

Item_to_characteristic table picture

如您所见,item_to_characteristic 保存了项目的 ID 及其特征。

这是我到目前为止编写的查询,但它没有返回我想要的内容,

SELECT item_characteristics.name, item_characteristics.icon_path 
FROM item_characteristics, item_to_characteristics as itch INNER JOIN items
ON items.id=itch.item_id
WHERE items.id=25;

查询应仅返回 5 行。

最佳答案

您已交叉连接表item_to_characteristics,这就是您获得的行数超出预期的原因。相反,您应该内部连接到 item_to_characteristics

SELECT  ic.name, ic.icon_path 
FROM item_characteristics ic
INNER JOIN item_to_characteristics as itch
ON itch.characteristic_id = ic.id
INNER JOIN items
ON items.id=itch.item_id
WHERE items.id = 25;

这是我总是建议使用 ANSI 92 Join 语法而不是您上面使用的 ANSI 89 语法的原因之一。 Aaron Bertrand 还提出了一个非常令人信服的切换案例 this article .

关于mysql - 使用 JOIN 和 HABTM 关联连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23059359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com