[英]I cannot subtract two different tables when one of them is empty
我有2個表rsales
和rreturn
,我有以下代碼。 當兩個表都具有值時,它可以正常運行,但是問題在於,當其中一個表為空或不存儲任何數據時,它不顯示結果。 我的代碼有問題嗎?
$result = mysql_query("SELECT category, (SELECT SUM(s.total)-SUM(r.total) FROM rsales AS s WHERE r.pcode=s.pcode) as total, r.pcode FROM rreturn AS r GROUP BY r.pcode;");
MySQL不支持FULL OUTER JOIN
,因此您需要模擬它。
一種方法:
SELECT IFNULL(sr.category,ss.category) AS category
, IFNULL(s.total,0)-IFNULL(r.total,0) AS total
FROM (
SELECT cr.pcode
FROM rreturn cr
GROUP BY cr.pcode
UNION
SELECT cs.pcode
FROM rsales cs
GROUP BY cs.pcode
) c
LEFT
JOIN ( SELECT sr.pcode
, MAX(sr.category) AS category
, SUM(sr.total) AS total
FROM rreturn sr
GROUP BY sr.pcode
) r
ON r.pcode = c.pcode
LEFT
JOIN ( SELECT ss.pcode
, MAX(ss.category) AS category
, SUM(sr.total) AS total
FROM rsales ss
GROUP BY ss.pcode
) s
ON s.pcode = c.pcode
內聯視圖c
獲取出現在rsales或rreturn中的所有pcode的完整列表。
然后,內聯視圖r
從rreturn獲得每個pcode的總數,而s
從rsales
獲得相同的rsales
。
然后,我們可以使用LEFT JOIN
操作來基於pcode匹配行。
(這不是返回指定結果集的唯一方法,僅是一個示例。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.