簡體   English   中英

當其中一個為空時,我不能減去兩個不同的表

[英]I cannot subtract two different tables when one of them is empty

我有2個表rsalesrreturn ,我有以下代碼。 當兩個表都具有值時,它可以正常運行,但是問題在於,當其中一個表為空或不存儲任何數據時,它不顯示結果。 我的代碼有問題嗎?

$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的總數,而srsales獲得相同的rsales

然后,我們可以使用LEFT JOIN操作來基於pcode匹配行。

(這不是返回指定結果集的唯一方法,僅是一個示例。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM