我正在尝试编写一个连接三个表的查询。 正如您在下图中看到的那样:
- 用户表
- 费用表
- 费用类别表
我需要获取一个按类别类型对费用进行分组的结果表(图像上的结果表)。
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
此查询工作正常,但我确信这不是正确的方法。
你能帮我吗?
非常感谢
最佳答案
您想要的查询具有 join
和一个聚合:
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;
关于Mysql查询三张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46039783/