0

我有以下脚本,它根据所有表中名为“order_id”的字段从 3 个表中获取结果。

$sql = "SELECT 
o.order_id, 
order_product.model,
o.name, 
o.value, 
GROUP_CONCAT(o.order_id, order_product.model, o.name, o.value SEPARATOR ',') AS Options 
FROM `order_option` AS o 
LEFT JOIN `order` AS oo on o.order_id = oo.order_id
LEFT JOIN order_product ON o.order_id = order_product.order_id
where oo.order_status_id = 2 
group by oo.order_id";

$result = mysql_query($sql); 
while($row = mysql_fetch_assoc($result))
 {
$options=$row['Options'];
print "|$options|";

    PRINT "<br>-------------------<br>";
} 

问题是在表“order_option”中有 2 行或更多行,每个 order_id 都有选项。

脚本打印的结果是:

ID,型号,选项 1:值,ID,型号,选项 2:值

我需要的是:

ID、型号、选项 1:值、选项 2:值

因此,每一行都没有重复 ID 和 MODEL。

有什么建议可以实现吗?

4

1 回答 1

0

问题在于您如何实施GROUP_CONCAT. 您的Order_Option表中有 2 行具有相同选项 ID 的不同选项。就像是:

OrderId    Name     Value
1          Option1  Value1 
1          Option2  Value2

使用 GROUP_CONCAT(OrderId, Name, Value) 将连接所有这些字段,例如:

1, Option1, Value1, 1, Option2, Value2

相反,您想自己检索 OrderId:

SELECT OrderId, GROUP_CONCAT(Name, Value)...

这会给你:

1, Option1, Value1, Option2, Value2

然后剩下的就在你的演示逻辑中。

祝你好运。

于 2013-02-08T14:12:53.267 回答