2012-12-28 149 views
0

沒有記錄我有這個疑問:MySQL查詢返回0時日期

Select 
    X.type1transsum, Y.type2transsum, 
    (X.type1transsum + Y.type2transsum), 
    X.`date` 
From (
    Select sum(trans) as type1transsum, `date` 
    from type1trans where shopcode = 1037 
    group by `date` 
) X 
Left join (
    Select sum(trans) as type2transsum, `date` 
    from type2trans where shopcode = 1037 
    group by `date` 
) Y on X.`date` = Y.`date` 

type2trans表對於每個日期的記錄,而在type1trans有一些日子沒有記錄(如當年沒有交易)。

對於type1trans中沒有記錄的日期,則不會顯示類型2日期的記錄,並且該日期的總數與type1爲null後的類型2相同。我怎樣才能讓type1在該日期返回null?

回答

1

使用RIGHT JOIN而不是LEFT JOIN(或只是交換查詢中的兩個子查詢)。

一個有用的規則要記住difference between left and right joins是左連接包括在其側的每一行,即使有在右邊不匹配的行,而右連接,相反,包括在其正確的每一行一面。

+0

謝謝 - 我剛剛想出了交換子選項。感謝您的提示左右 – CHinAU