mysql表连接多对多_mysql – 连接表上的SQL连接具有多对多的关系

这篇博客讨论了如何在MySQL中使用LEFT JOIN查询从多对多关系的联结表中选取特定商店(shop_id为3)的产品信息。作者遇到了查询返回所有产品的问题,而不是只返回指定商店的产品。通过调整查询,最终得到了期望的输出,即只显示在shop_id为3的商店中销售的'Apple'(红色)和'Banana'(黄色)产品。
摘要由CSDN通过智能技术生成

我有三个表,其中2个是常规数据表,1个是多对多联结表.

两个数据表:

table products

product_id | product_name | product_color

-----------------------------------------

1 | Pear | Green

2 | Apple | Red

3 | Banana | Yellow

table shops

shop_id | shop_location

--------------------------

1 | Foo street

2 | Bar alley

3 | Fitz lane

我有一个包含shop_id和product_id的联结表:

table shops_products

shop_id | product_id

--------------------

1 | 1

1 | 2

2 | 1

2 | 2

2 | 3

3 | 2

3 | 3

我想从shop_id 3中的商店中选择数据.我从这里尝试了许多连接,左连接,内连接的例子,但我只是不知道我在这里做什么以及出了什么问题.我的查询,但只是返回所有产品,无论他们是否在指定的商店是如下:

SELECT products.product_name, products.product_color

FROM products

LEFT OUTER JOIN shops_products

ON products.product_id = shops_products.product_id

AND shops_products.shop_id = 3

LEFT OUTER JOIN shops

ON shops_products.shop_id = shops.shop_id

预期的输出如下:

product_name | product_color

----------------------------

Apple | Red

Banana | Yellow

这是在MySQL,谢谢你的任何帮助,我真的很感激.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值