用于对mysql中不同表中的不同列求和的查询
我有三个表,我试图将它们连接起来,从两个表中获取它们的总和,然后将两个表中的总和相加 这里我有一个用于查询结构的SQL FIDLE: 我希望输出如下所示:用于对mysql中不同表中的不同列求和的查询,mysql,sum,left-join,inner-join,Mysql,Sum,Left Join,Inner Join,我有三个表,我试图将它们连接起来,从两个表中获取它们的总和,然后将两个表中的总和相加 这里我有一个用于查询结构的SQL FIDLE: 我希望输出如下所示: emp_id firstname middlename lastname name_ext SUM(amount_paid) SUM(salary_paid) SUM(total) 1 test test test test 300
emp_id firstname middlename lastname name_ext SUM(amount_paid) SUM(salary_paid) SUM(total)
1 test test test test 300 500 800
无需子查询,只需对值进行求和即可,并按tbl\u用户分组
SELECT DISTINCT tbl_user.firstname,
tbl_user.middlename,
tbl_user.lastname,
tbl_user.name_ext,
sum(coalesce(tbl_overtime.amount_paid,0)),
sum(coalesce(tbl_salary.salary_paid,0)),
sum(coalesce(tbl_salary.salary_paid,0)+coalesce(tbl_overtime.amount_paid,0))
FROM tbl_user
INNER JOIN tbl_salary ON tbl_user.employee_id = tbl_salary.employee_id
LEFT JOIN tbl_overtime ON tbl_overtime.employee_id = tbl_salary.employee_id
GROUP BY tbl_user.firstname,
tbl_user.middlename,
tbl_user.lastname,
tbl_user.name_ext
这是你的问题。表将联接按员工id划分的总计组的子查询
SELECT DISTINCT tbl_user.firstname,
tbl_user.middlename,
tbl_user.lastname,
tbl_user.name_ext,
t3.amount_paid,
t3.salary_paid,
t3.total
FROM tbl_user
INNER JOIN tbl_salary ON tbl_user.employee_id = tbl_salary.employee_id
LEFT JOIN tbl_overtime ON tbl_overtime.employee_id = tbl_salary.employee_id
left join
(select t1.employee_id
, SUM(coalesce(t2.amount_paid, 0)) as amount_paid
, SUM(coalesce(t1.salary_paid, 0)) as salary_paid
, SUM(coalesce(t2.amount_paid, 0)) + SUM(coalesce(t1.salary_paid, 0)) as total
from tbl_salary t1
left join tbl_overtime t2 on t2.employee_id = t1.employee_id
group by t1.employee_id) as t3 on t3.employee_id = tbl_user.employee_id
另一个很好的答案是@Royhey你能再帮我一次吗?你需要什么@JcJohn?请看我的链接。我有重复的条目,我希望避免添加那些状态为status=1i的状态。我有一个问题,即如果某个左连接在其他表中为空,则该左连接将加倍?在左连接期间,使用coalesce()更新为空值join@Metal嘿你能再帮我一次吗?我已经更新了sqlfiddle。我如何才能只添加那些状态为0的人?@JcJohn,请检查此
where
子句应位于from之后、join tables和group by之前