【发布时间】:2014-10-03 22:46:32
【问题描述】:
我正在组合两个查询,我正在使用 UNION 来组合这两个结果集。
第一次查询:
SELECT * FROM (SELECT bsb.ID AS order_item_id, bsb.NAME AS order_item_name, 'line_item' AS order_item_type, bsb.ORDER_ID AS order_id
FROM b_sale_basket bsb
WHERE bsb.ORDER_ID IN (810, 255)
UNION
第二次查询:
SELECT bso.ID AS order_item_id, bsd.NAME AS order_item_name,
'shipping' AS order_item_type, bso.ID AS order_id FROM b_sale_order bso
LEFT OUTER JOIN b_sale_delivery bsd ON bso.DELIVERY_ID = bsd.ID
WHERE bso.ID IN (255, 810)) order_union_result
这两个查询的结果都不错,看起来像这样:
我尝试在第二个查询的末尾放置一个 ORDER BY 子句,以便在所有 ordered_items 之后有一个 SHIPMENT ROW 下面
UNION
SELECT bso.ID AS order_item_id, bsd.NAME AS order_item_name, 'shipping' AS order_item_type, bso.ID AS order_id
FROM b_sale_order bso
LEFT OUTER JOIN b_sale_delivery bsd ON bso.DELIVERY_ID = bsd.ID
WHERE bso.ID IN (255, 810)) order_union_result ORDER by bso.ID
但是它提示我一个错误:#1054 - Unknown column 'bso.ID' in 'order Clause'
结果应如下所示: http://i.stack.imgur.com/ZCfLk.png
注意:我想对行进行排序,以便在所有订购的物品都完成后,它们下方有一个运输行
请帮助我。感谢您的帮助,不胜感激
【问题讨论】:
-
尝试使用
order_union_result ORDER by order_item_id -
您好 Jens,感谢您的快速回复。我试过你的建议,但它不会排序,因为它们有不同的 order_item_id,就像图片中一样
-
@Redsot:你试过
order_id下单吗? -
你好 Jens.. 我已经解决了答案.. 我使用了两个字段来排序.. 你应该像 Samonth 那样发布你的答案作为一个真实的答案,这样我就可以做绿色复选标记.. 再次感谢 Jens
标签: mysql database union sql-insert jointable