簡體   English   中英

MySQL-在單行中顯示子查詢的結果

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM