我有 3 个表:
products table
--------------
id
name
...
categories table
----------------
id
name
...
product_categories table
------------------------
product_id
category_id
并通过这个查询加入他们:
select p.*
from products p
join product_categories pc on pc.product_id = p.id
join categories c on pc.category_id = c.id
此查询针对该产品的每个类别返回该产品的多个记录,但我只想获取该产品的一个产品和多个类别。
这是我的输出:
p.Id p.name --> cat_id cat_name
1 product_1 --> 1 cat1
1 product_1 --> 3 cat3
1 product_1 --> 2 cat2
1 product_1 --> 6 cat6
2 product_2 --> 5 cat5
2 product_2 --> 1 cat1
.
.
.
和期望的输出:
p.Id p.name --> cat_id cat_name,cat_id cat_name,...
1 product_1 --> 1 cat1,3 cat3,2 cat2,6 cat6
2 product_2 --> 5 cat5,1 cat1
.
.
.
我该怎么做?
最佳答案
您应该添加 WHERE
子句来指定 ID,并且在 select 子句中您可能想使用 c.*
而不是 p.*
来从类别中获取所有数据。
select p.name, c.*
from products p
join product_categories pc on pc.product_id = p.id
join categories c on pc.category_id = c.id
where p.id = --smth
关于c# - 如何从连接表中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644081/