MySQL SQL 多对多选择
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3486644/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 16:52:08 来源:igfitidea点击:
SQL many to many select
提问by Ken
category_product
---------------
id_category
id_product
product
---------------
id_product
id_manufacturer
manufacturer
---------------
id_manufacturer
name
How would I create an SQL query so that it selects all the names from manufacturer when id_category is equal to something?
我将如何创建 SQL 查询,以便在 id_category 等于某值时从制造商中选择所有名称?
回答by chryss
It's a straightforward inner join of the tables:
这是表的直接内部联接:
SELECT m.name, cp.id_category
FROM manufacturer as m
INNER JOIN product as p
ON m.id_manufacturer = p.id_manufacturer
INNER JOIN category_product as cp
ON p.id_product = cp.id_product
WHERE cp.id_category = 'some value'
回答by YoK
Query without joins will look like following :
没有连接的查询将如下所示:
SELECT m.name
FROM manufacturer as m, product as p, category_product as cp
WHERE cp.id_category = <your value>
AND cp.id_product = p.id_product
AND p.id_manufacturer = m.id_manufacturer
回答by CooL i3oY
Select M.name
From manufacturer M
Where M.id_manufacturer in ( Select P.id_manufacturer
From product P
Where P.id_product in ( Select C.id_product
From category_product C
Where C.id_category = ?))
回答by Geri Croi
SELECT m.name, cp.id_category
FROM manufacturer AS M INNER JOIN product AS P
ON M.id_manufacturer = M.id_manufacturer
INNER JOIN category_product AS CP
ON P.id_product = CP.id_product
WHERE cp.id_category = 'add value'
回答by Adriaan Stander
Try something like
尝试类似的东西
SELECT m.*
FROM category_product cp INNER JOIN
product p ON cp.id_product = p.id_product INNER JOIN
manufacturer m ON p.id_manufacturer = m.id_manufacturer
WHERE cp.id_category = <your_value>