我有一个在MySQL的产品数据库,并试图查看与PHP的内容。我目前正在使用3个表: prod、div和prodCatDiv。prod表保存每个产品的数据,而div表保存我公司5个部门中每个部门的ID。prodCatDiv表是一个连接表,其外键与其他两个表的ID相关。
我的表是这样设置的:
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,那么它会列出该产品两次,每个清单上都有第一和第二个部门。我如何组合这两个清单,使其显示同时属于divID=1和divID=2的一个prodID=1?
我在页面上有一个表格来显示结果。在此表中,每个部门都有列,这些列被“勾选”,以便用户可以看到每个产品所在的部门。目前,如果产品在两个部门中,它将为该产品创建两行。我希望这个基于prodID的产品是一个单行,在它所属的两个分区列中都有一个复选标记。
发布于 2013-12-07 04:26:09
您可以聚合这些值并创建包含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;https://stackoverflow.com/questions/20432162
复制相似问题