繁体   English   中英

mysql查询三张表

[英]Mysql query three tables

我正在尝试编写一个连接三个表的查询。 如您在下图所见,我有:

  • 用户表
  • 费用表
  • 费用类别表

我需要得到一个按类别分类费用的结果表(图像上的结果表)。

在此处输入图片说明

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM