繁体   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