mysql - 如何为列表中的单个产品获取多个类别

标签 mysql

我想选择类别和产品我确实有多个类别用于同一产品并且我试图以列表方式显示,

我确实尝试过使用子查询和连接,但我得到了同一产品的重复记录

我期望得到的结果是用逗号分隔一行中同一产品的所有类别

我正在尝试获取如下所示的数据

--------------------------------------------------------------
PRODUCT_NAME                          CATEGORY
--------------------------------------------------------------
Female Shoes - Blue color             Footwear, Sunglass
Female Sunglass Yellow color          Sunglass, Fashion, Eye protection

这是我的 SQL Fiddle 链接

http://sqlfiddle.com/#!9/44dad2/1

最佳答案

在MySQL中:

SELECT 
  P.PRODUCT_NAME,
  GROUP_CONCAT(C.CATEGORY_NAME separator ',')
FROM 
  PRODUCT_CATEGORY PC
  LEFT JOIN PRODUCT P ON (P.PRODUCT_ID = PC.PRODUCT_ID)
  LEFT JOIN CATEGORY C ON (C.CATEGORY_ID = PC.CATEGORY_ID)
GROUP BY
  P.PRODUCT_NAME
ORDER BY 
  P.PRODUCT_NAME ASC

在 Oracle 11g 中:

SELECT 
  P.PRODUCT_NAME,
  wm_concat(C.CATEGORY_NAME)
FROM 
  PRODUCT_CATEGORY PC
  LEFT JOIN PRODUCT P ON (P.PRODUCT_ID = PC.PRODUCT_ID)
  LEFT JOIN CATEGORY C ON (C.CATEGORY_ID = PC.CATEGORY_ID)
GROUP BY
  P.PRODUCT_NAME
ORDER BY 
  P.PRODUCT_NAME ASC

关于mysql - 如何为列表中的单个产品获取多个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884701/

相关文章:

mysql - 3张表之间的特殊连接

插入触发器后MySQL更新

jquery - 使用 MySql/Node js 创建通知服务器

Mysql - 按多个表和列分组

php - 数据库中具有关系表的重复行

mysql - 在 Hive 中找到右侧的数字

mysql - 将带有 FK 的列添加到 MySQL 5.6 中的现有表中

php - 带有 mySQL 和 DOM 的 XML

mysql - 关联表而不扭曲数据

java - MacOS 系统上的 MySQL Docker 容器 INFILE/INTO OUTFILE 语句