php - 合并具有不同外键多个值的同一产品 ID 的多个实例?

标签 php mysql sql

我在 MySQL 中有一个产品数据库,并尝试使用 PHP 查看内容。我目前正在使用 3 个表:prod、div 和 prodCatDiv。 prod 表保存每个产品的数据,而 div 表保存我公司 5 个部门的 ID。 prodCatDiv 表是一个连接表,其外键与其他两个表的 ID 相关。

我的 table 是这样设置的:

prod
-
prodID | prodName | prodImg | prodDesc

div
-
divID | divName

prodCatDiv
-
prodID | catID | divID

我的SQL语句如下:

"SELECT * FROM prod LEFT JOIN prodCatDiv ON prod.prodID=prodCatDiv.prodID ORDER BY prodUpdate DESC";

但是,当我尝试使用这些表中的数据填充页面时,我从同一 prodID 中获得多个列表。因此,如果我将 prodID=1 归因于 divID=1 和 divID=2,它会将该产品列出两次,每个列表上都有第一个和第二个部分。如何组合这两个列表,以便将一个 prodID=1 显示为同时属于 divID=1 和 divID=2?

我在页面上有一个表格来显示结果。在此表中,每个部门都有一些列被“选中”,以便用户可以看到每个产品属于哪个部门。目前,如果该产品属于两个部门,则它会为该产品创建两行。我希望基于 prodID 的该产品成为单行,并在其归属的两个部门列中都带有复选标记。

最佳答案

您可以聚合值并使用 DivId 列表创建单个列:

SELECT p.*, group_concat(pcd.DivId separator ', ') as DivIds
FROM prod p LEFT JOIN
     prodCatDiv pcd
     ON p.prodID = pcd.prodID
GROUP BY p.ProdId
ORDER BY prodUpdate DESC;

关于php - 合并具有不同外键多个值的同一产品 ID 的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432162/

相关文章:

java - 如何使用 Hibernate 将原始 SQL 投影放入对象中?

php - 从 xampp 的 codeigniter 中删除 index.php

php - 将 json 解析为字符串时出错

php - 解决方案 "Could not find driver"& "can' t 通过套接字连接到本地 MYSQL 服务器” - Laravel

mysql - 使用mysql查询对多个条件进行分组

php - Mysql的select返回了多少行?

sql - 在雪花中实现sql "JOIN"返回策略的最佳实践

php - Nginx/php 查询字符串

mysql - 如何使用 JSON 字段连接 MySQL 表?

SQL Join 对每条记录进行匹配