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

标签 php mysql sql

我的 MySQL 数据库中有 3 个表。表格和列如下例所示

用户

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

工资

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

贷款

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 进行了实验失败了。

最佳答案

这似乎可行:

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 fiddle here .

关于php - MySQL 查询从 3 个表中获取 SUM 和合并结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028943/

相关文章:

javascript - 如何在 Cookie 上强制 HttpOnly FALSE,以便 JavaScript 可以使用 PHP 跨域读取它们?

PHP 在 $_POST 中使用数组时返回 null

mysql - 防止循环连接、递归搜索

mysql - SQL 查询帮助 - 为每个 ID 选择非空值(多行)

sql - 基于逻辑 AND 而不是逻辑 OR 查找关联

php - 使用字符串创建 PHP 类实例

php - 无法访问我的本地托管网站的管理仪表板

php - 计算按一年中的几周分组的记录

mysql - 选择最新日期(子查询)

php - 返回三个 SQL 表的随机结果