如何在 SQL 中同时从 2 个表中获取值

How to get the values from 2 tables together in SQL

我有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 leavetotal.I 的总休假天数不知道如何获得。 提前致谢。

在 FROM 子句中,您可以指定多个 table,这将导致两个 table 的笛卡尔积。因此,a table 中的每一行都将与所有其他 table 中的每一行相连。这当然不是您想要的,您只希望连接具有相同 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

您正在寻找一个加入,然后是一个分组:

SELECT   em.empcode, empname, SUM(leave)
FROM     emp_mst em
JOIN     leavetotal l ON em.empcode = l.empcode
GROUP BY em.empcode, empname 

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解法:

select e.empcode, e.empname,
       (select SUM(l.leave) from leavetotal l
        where e.empcode = l.empcode)
from emp_mst e