我有2张桌子
1. emp_mst
empcode empname
001 abc
002 def
2. leavetotal
empcode leave
001 10
001 5
001 2
002 12
002 8
现在我想从emp_mst中获取empcode和empname 以及从总投递中休假的总数。我不知道如何得到它。 提前谢谢。
答案 0 :(得分:1)
在FROM子句中,您可以指定多个表,这将产生两个表的笛卡尔积。因此,表中的每一行都将与所有其他表中的每一行连接。这当然不是您想要的,您只希望连接具有相同empcode的行。所以需要在WHERE CLAUSE中指定。
SELECT
MST.EMPCODE,
MST.EMPNAME,
SUM(LTO.LEAVE)
FROM
EMP_MST MST,
LEAVETOTAL LTO
WHERE
MST.EMPCODE = LTO.EMPCODE
GROUP BY
EMPCODE,
EMPNAME
答案 1 :(得分:0)
您正在寻找加入,然后是一个小组:
SELECT em.empcode, empname, SUM(leave)
FROM emp_mst em
JOIN leavetotal l ON em.empcode = l.empcode
GROUP BY em.empcode, empname
答案 2 :(得分:0)
JOIN
/ GROUP BY
解决方案:
select e.empcode, e.empname, SUM(l.leave)
from emp_mst e
left join leavetotal l on e.empcode = l.empcode
group by e.empcode, e.empname
LEFT JOIN
甚至列出那些没有休假的人。 (如果不需要,只需JOIN
。)
相关的子选择解决方案:
select e.empcode, e.empname,
(select SUM(l.leave) from leavetotal l
where e.empcode = l.empcode)
from emp_mst e