[英]MySQL - Displaying results from a sub-query in a single row
我有两个表,产品和类别。 一个产品可以属于多个类别。
product (<product_id>, name, desc, price)
category (<category_id>, slug, display_name)
product_category(<category_id>, <product_id>)
产品与类别具有N:M关系。 我想要一个在单行中显示产品类别的查询,像这样
name | desc | categories
------------------------------------------------------------------
The One Ring One ring to rule them all Magical Item, Jewelry
其中Magical Item是一个类别,而Jewelry是另一个类别(不是现实生活中的例子。Sauron并没有要求我开设商店)。
所以我在想:
SELECT name, desc, categories.display_name FROM product, category,
category_product WHERE product.product_id = category_product.product_id AND
category_product.category_id = category.category_id
但是,如果该项目属于多个类别,则将导致该项目被多次列出。 如何将所有类别仅排成一排?
采用:
SELECT p.name,
p.desc,
GROUP_CONCAT(c.display_name) AS categories
FROM PRODUCT p
JOIN PRODUCT_CATEGORY pc ON pc.product_id = p.product_id
JOIN CATEGORY c ON c.category_id = pc.category_id
GROUP BY p.name, p.desc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.