提前谢了,我就是不明白!
我有两张桌子
有序_项目
ID | Item_Name
1 | Pizza
2 | Stromboli
有序_备选方案
Ordered_Item_ID | Option_Number | Value
1 43 Pepperoni
1 44 Extra Cheese
2 44 Extra Cheese
我想要输出的是MySQL查询。
输出量
ID | Item_Name | Option_1 | Option_2
1 Pizza Pepperoni Extra Cheese
2 Stromboli NULL Extra Cheese
我尝试过许多选项--大多数以语法错误结尾,我尝试过组。_但这并不是我想要的。下面我有一个粗略的例子,说明我认为可能是一个开始。每次我都需要选择的顺序是一样的。而在收集信息的程序中,没有办法可靠地确保这将发生。是否可以根据选项号进行连接。另外,我知道我永远不会有超过5个选项,所以静态解决方案会起作用。
Select Ordered_Items.ID,
Ordered_Items.Item_Name,
FROM Ordered_Items
JOIN (SELECT Ordered_Options.Value FROM Ordered_Options Where Option_Number = 43) as Option_1
ON Ordered_Options.Ordered_Item_ID = Ordered_Item.ID
JOIN (SELECT Ordered_Options.Value FROM Ordered_Options Where Option_Number = 44) as Option_2
ON Ordered_Options.Ordered_Item_ID = Ordered_Item.ID;
发布于 2018-03-20 15:24:17
最简单的方法就是利用这个小组_这里的群函数..。
select
ordered_item.id as `Id`,
ordered_item.Item_Name as `ItemName`,
GROUP_CONCAT(Ordered_Options.Value) as `Options`
from
ordered_item,
ordered_options
where
ordered_item.id=ordered_options.ordered_item_id
group by
ordered_item.id
它的产出:
Id ItemName Options
1 Pizza Pepperoni,Extra Cheese
2 Stromboli Extra Cheese
这样,就可以拥有任意多的选项,而不必修改查询。
啊,如果你看到你的结果被裁剪了,你可以增加组的大小限制。_像这样:
SET SESSION group_concat_max_len = 8192;
https://stackoverflow.com/questions/-100007690
复制相似问题