[英]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.