我在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,则它会在每个列表的第一个和第二个分区中列出该产品两次。我如何组合这两个列表,以便它显示一个prodID = 1归因于BOTH divID = 1 AND divID = 2?
我在页面上有一个表格来显示结果。在此表中,每个部门的列都有“选中标记”,以便用户可以查看每个产品所在的部门。目前,如果该产品位于两个部门中,则会为产品创建两行。我希望这个基于prodID的产品是一行,并且在两个分区列中都有一个复选标记。
答案 0 :(得分:0)
您可以聚合这些值并使用DivId
s:
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;