gpt4 book ai didi

mysql - SQL 在查询中组合行

转载 作者:行者123 更新时间:2023-11-29 02:04:16 24 4
gpt4 key购买 nike

我正在使用 MySQL 数据库,并且我正在尝试合并我的结果。我的 SQL Chop 经验不足,无法想出实现此目的的方法。

图片解释了我的目标和数据库结构。 http://i.stack.imgur.com/x6dCo.png

这是我正在使用的:

SELECT
LISTITEMS.ID,
LISTITEMS.ItemName,
PROPVALUE.PropValue,
LISTPROPERTIES.PropName
FROM LISTITEMS
INNER JOIN PROPVALUE
ON LISTITEMS.ID = PROPVALUE.ItemID
INNER JOIN LISTPROPERTIES
ON LISTPROPERTIES.ID = PROPVALUE.PropID
WHERE LISTITEMS.ListID = '$_GET[ID]'

这将返回 2 行,我需要 1 行(我从其他 2 个表中删除了“ID”列)。

ID  ItemName  PropValue    ListID       PropName
1 item 1 PropValue1 1 Property1
1 item 1 PropValue2 1 Property2

编辑 所需的输出:

ID  ListID ItemName  PropName1 PropValue1   PropName2 PropValue2
1 1 Item 1 Property1 PropValue1 Property2 PropValue2

最佳答案

由于属性名称会动态变化,因此将它们组合在 GROUP_CONCAT() 中然后在您的应用程序层中将它们分开会容易得多:

编辑:固定查询以包含您所有的JOIN:

SELECT
LISTITEMS.ID,
LISTITEMS.ItemName,
GROUP_CONCAT(CONCAT_WS('|', LISTPROPERTIES.PropName, PROPVALUE.PropValue)) AS Properties
FROM LISTITEMS
INNER JOIN PROPVALUE
ON LISTITEMS.ID = PROPVALUE.ItemID
INNER JOIN LISTPROPERTIES
ON LISTPROPERTIES.ID = PROPVALUE.PropID
WHERE LISTITEMS.ListID = '$_GET[ID]'
GROUP BY LISTITEMS.ID, LISTITEMS.ItemName

这将输出如下内容:

ID ItemName  Properties
1 Item1 Property1|PropValue1,Property2|PropValue2,Property3|PropValue3

然后在您的 PHP 代码中,explode() 首先在 上获取属性, 获取对,然后 explode() 每个在 | 上获取 name|value 键和值。

关于mysql - SQL 在查询中组合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com