2017-09-04 92 views
0

我正在嘗試編寫一個連接三個表的查詢。 正如你可以像下面我有看到:Mysql查詢三個表

  • 用戶表
  • 費用表
  • 費用類別表

我需要得到一個結果表按類別類型學該團體費用(圖像上的RESULT TABLE)。

enter image description here

select users.email, 
(
    SELECT IFNULL(sum(expenses.amount),0) 
    FROM expenses 
    JOIN expense_categories as cat 
    ON cat.id = expenses.category_id 
    AND cat.type = 'home' 
    WHERE expenses.user_id = users.id 
) as 'home expenses' 
from users 

這個查詢工作正常,但我敢肯定,是不是這樣做的正確方法。

你能幫我嗎?

謝謝你這麼多

回答

2

您想查詢有join S和一個聚集:

SELECT u.id, u.email, 
     SUM(CASE WHEN ec.type = 'home' THEN e.amount ELSE 0 END) as home, 
     SUM(CASE WHEN ec.type = 'job' THEN e.amount ELSE 0 END) as job 
FROM users u LEFT JOIN 
    expenses e 
    ON u.id = e.user_id LEFT JOIN 
    expense_categories ec 
    ON ec.id = e.category_id 
GROUP BY u.id, u.email; 
+0

謝謝@Gordon! –