2013-12-19 126 views
0

我需要一些幫助來創建此查詢。我加入TableATableB並從中獲得價值;然後加入TableATableC,如果有值,則可以獲得值。最後,我減少了這兩個值。加入3個子查詢

我不知道如何在單個查詢中使用很多JOIN來編寫此代碼,或者如果我只是執行2個子查詢然後減去它們。

到目前爲止,我有這樣的:

SELECT SUM(A.quantity) From TableA JOIN Table B WHERE ... 

然後

SELECT SUM(A.quantity) From TableA JOIN Table C WHERE ... 

鑑於也許TableATableB沒有結果的機會,但TableATableC做,或者反之亦然,或者也許兩者有或可能兩者都不會,我不能只是JOINTableATableBTableC

+0

如果不產生任何結果,你打算做什麼?使用0,並可能最終減去負數? –

+0

我有聯盟記,但這不是我現在要求的 –

回答

0

你可以用一個cross join做到這一點:

select coalesce(s1.q1, 0) - coalesce(s2.q2, 0) 
from (SELECT SUM(A.quantity) as q1 From TableA JOIN Table B WHERE ...) s1 cross join 
    (SELECT SUM(A.quantity) as q2 From TableA JOIN Table C WHERE ...) s2; 

如果結果的一個集返回NULL,該coalesce()治療的價值0