2014-06-20 41 views
0

我正在跟蹤MySQL中的交易,並且我正在嘗試彙總一份報告以顯示給定月份的每個帳戶的總計。現在,我可以通過它向我顯示任何有交易帳戶的總計,但問題是我需要它還返回沒有交易的帳戶,而目前的查詢沒有這樣做。按帳戶統計所有帳戶的交易

我的數據庫設計有兩個表,一個用於帳戶(每個帳戶都有一個名稱和ID)以及一個交易表(帶有id,accountId,日期和金額字段)。我目前的查詢是這樣的:

SELECT 
    SUM(transactions.amount) AS monthly_total, 
    accounts.id AS account_id, 
    accounts.name AS account_name 
FROM accounts 
LEFT JOIN transactions ON transactions.accountId = accounts.id 
WHERE transactions.date BETWEEN '2014-01-01' AND '2014-01-31' 
GROUP BY accounts.id 
ORDER BY accounts.name 

就像我說的,這個查詢的作品除了它不返回所有帳戶。它只返回記錄交易的賬戶。有任何想法嗎?

回答

3

您的WHERE條件會過濾掉沒有交易的帳戶。

嘗試 -

SELECT 
    SUM(transactions.amount) AS monthly_total, 
    accounts.id AS account_id, 
    accounts.name AS account_name 
FROM accounts 
LEFT JOIN transactions ON transactions.accountId = accounts.id 
     AND transactions.date BETWEEN '2014-01-01' AND '2014-01-31' 
GROUP BY accounts.id 
ORDER BY accounts.name 
0

試試這個

... 
sum(ifnull(transactions.amount, 0)) 
... 
right JOIN transactions ON transactions.accountId = accounts.id 
... 
相關問題