我正在使用MySQL的UNION特性检索表结果/s。该表基本上包含来自sales order的有序项。
下面是我使用的查询:
SET @meta_id=0;
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_product_id' AS meta_key, bsb.PRODUCT_ID AS meta_value, 1 AS origin
FROM b_sale_basket bsb
WHERE bsb.ORDER_ID = 255
UNION
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_qty' AS meta_key, bsb.QUANTITY AS meta_value, 2 AS origin
FROM b_sale_basket bsb
WHERE bsb.ORDER_ID = 255
) sales_order_meta 上面的first查询检索具有255的 ordered
而
第二个查询在上检索每个产品订购的数量
Side :如果您问我为什么这样查询它们,因为它们都属于同一个表,这是因为我试图检索它们,就像woocommerce对其订购的项所做的那样.
上面查询的输出如下所示:
http://i.stack.imgur.com/qPsjv.png
但是,我想订购结果,使在每个产品订购的下面有一个数量的,每个产品订购的低于。
我想要的最终结果如下所示:http://i.stack.imgur.com/wx6Aw.png
请帮帮我..。
发布于 2014-08-18 07:20:20
您可以使用用户定义的变量为每个查询提供一个秩,因此第一行查询1的秩为1,同样,第二次查询的第一行的秩为1,然后是2 ,3,等等,然后将结果按该行编号排序。
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_product_id' AS meta_key, bsb.PRODUCT_ID AS meta_value, 1 AS origin
,@r:= @r +1 AS `row`
FROM b_sale_basket bsb,(SELECT @r:=0) t
WHERE bsb.ORDER_ID = 255
UNION
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_qty' AS meta_key, bsb.QUANTITY AS meta_value, 2 AS origin
,@r:= @r +1 AS `row`
FROM b_sale_basket bsb,(SELECT @r:=0) t
WHERE bsb.ORDER_ID = 255
ORDER BY `row`编辑
您也可以尝试ORDER BY order_item_id,meta_key
https://stackoverflow.com/questions/25357975
复制相似问题