MySQL查询从3个表中获取SUM和合并结果

时间:2013-11-17 08:55:55

标签: php mysql sql

我的MySQL数据库中有3个表。表格和栏目如下面的样本

User

id, name,  dob,       gross_salary
----------------------------------
1,  test1, 12 Mar 90, 50000
2,  test2, 10 Jan 85, 45000

Wage

ida, date,      allowence_paid
------------------------------
1,   10 Jul 13, 12000
2,   10 Aug 13, 23000
2,   12 Aug 13, 1000
1,   15 Aug 13, 15000

Loan

id, date,      loan_amount
--------------------------
2,  05 Jul 13, 500
1,  05 Aug 13, 2500
1,  06 Aug 13, 1200

我需要将这三个表合并到8月13日的结果中,如

id, name,  allowence_paid, loan_Amount, paid
--------------------------------------------
1,  test1, 15000,          3700,        11300
2,  test2, 24000,             0,        24000

在我的案例中,需要来自连接到另一个表的两个不同表的两列的SUM。

我可以获得查询帮助吗?我按照MySQL JOIN with SUM and 3 tables进行了实验并失败了。

1 个答案:

答案 0 :(得分:0)

这似乎有效:

select *, allowence_paid-loan_amount as paid
from
(
select User.id as UserId, User.name as UserName, sum(allowence_paid) as allowence_paid
from Wage join User on Wage.ida=User.id 
and Wage.date between '2013-08-01 00:00:00' and '2013-08-31 23:59:00'
  group by UserId
) W JOIN
(
select User.id as UserId, User.name as UserName, sum(coalesce(loan_amount,0)) AS   loan_amount 
from Loan right outer join User on Loan.id=User.id 
and Loan.date between '2013-08-01 00:00:00' and '2013-08-31 23:59:00'
group by UserId
) L ON W.UserId = L.UserId

SQL小提琴here

相关问题