[英]Joining 2 selects in one query
如何在一個查詢中加入這 2 個選擇?
SELECT st.tracking_id FROM sale_order_line_tracking AS st, sale_order_line AS sol
WHERE st.order_line_id = sol.id
AND sol.id in %s;
SELECT rsolp.pack_id from rp_sale_order_line_pack AS rsolp, sale_order_line AS sol
WHERE rsolp.sale_line_id = sol.id
AND sol.id in %s;
如果要合並來自兩個不同查詢的兩個結果,可以使用UNION
語法:
SELECT st.tracking_id FROM sale_order_line_tracking AS st, sale_order_line AS sol
WHERE st.order_line_id = sol.id
AND sol.id in %s
UNION
SELECT rsolp.pack_id from rp_sale_order_line_pack AS rsolp, sale_order_line AS sol
WHERE rsolp.sale_line_id = sol.id
AND sol.id in %s;
這將返回一個結果表,但您的查詢彼此太相似,因此更好的選擇是JOIN
您可以嘗試使用 JOIN
SELECT st.tracking_id,rsolp.pack_id
FROM sale_order_line_tracking AS st join sale_order_line AS sol
on st.order_line_id = sol.id join rp_sale_order_line_pack AS rsolp
on rsolp.sale_line_id = sol.id
AND sol.id in %s;
以下可以是連接查詢之一。 但是現在取決於您是否想要 LEFT 或 RIGHT 連接,因此您可以修改查詢。
您還可以更改是先使用跟蹤表還是先使用銷售訂單表的順序,以使其與您的業務案例相關。
SELECT st.tracking_id,rsolp.pack_id
FROM sale_order_line_tracking AS st Join sale_order_line AS sol
on st.order_line_id = sol.id
Join rp_sale_order_line_pack AS rsolp on rsolp.sale_line_id = sol.id
WHERE sol.id in %s;
做一個雙LEFT JOIN
:
SELECT sol.*, st.tracking_id, rsolp.pack_id
FROM sale_order_line AS sol
LEFT JOIN sale_order_line_tracking AS st
ON st.order_line_id = sol.id
LEFT JOIN rp_sale_order_line_pack AS rsolp
ON rsolp.sale_line_id = sol.id
WHERE sol.id in %s;
你需要以這種方式運行:
SELECT st.tracking_id FROM sale_order_line_tracking AS st, sale_order_line AS sol
WHERE st.order_line_id = sol.id
AND sol.id in %s
UNION
SELECT rsolp.pack_id from rp_sale_order_line_pack AS rsolp, sale_order_line AS sol
WHERE rsolp.sale_line_id = sol.id
AND sol.id in %s;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.