2014-10-16 57 views
-1

我有一個MySQL查詢像這樣的現場:SUM 2 2頁不同的表

SELECT SUM(bills.Amount) AS AmountExpense, SUM(assets.Amount) as AmountIncome 
FROM bills, assets where bills.UserId = 11 and assets.UserId =11 

樣品紙幣表

id payee description UserId   Amount 
1 john advance   11   15.0   
2 dave request   2   13.0 
3 er  request   11   12.0 

樣品資產表

id payee description UserId   Amount 
1 john advance   11   40.2   
2 dave request   2   13.0 
3 ww  request   11   14.00 

我有一個問題AmountExpense,記錄SUM記錄多次。我已經獲得了金額收入。有什麼建議麼?

+0

您可以添加一些示例數據嗎?還要說明這兩個表是如何相互關聯的。 – NMK 2014-10-16 13:33:04

回答

0

在這些表的一個或兩個上,每個用戶最有可能多於一行。執行聚合後您需要加入它們。另外,請不要使用舊風格的非ANSI隱含聯接:

SELECT AmountExpense, AmountIncome 
FROM ( SELECT UserId, 
       SUM(Amount) AS AmountExpense 
     FROM bills 
     GROUP BY UserId) AS b 
LEFT JOIN (SELECT UserId, 
        SUM(Amount) AmountIncome 
      FROM assets 
      GROUP BY UserId) AS a 
    ON b.UserId = a.UserId 
WHERE b.UserId = 11 
+0

非常感謝你... – 2014-10-16 13:40:35

0

如果有可能,用戶可以在任意一個表,而不是其他的,那麼你想full outer join的等價物。 MySQL不支持該語法,但它確實支持:

select userid, sum(amountexpense) as amountexpense, sum(amountincome) as amountincome 
from (select userid, amount as amountexpense, null as amountincome 
     from bills 
     union all 
     select userid, null, amount as amountincome 
     from assets 
    ) ba 
group by userid;