对于我的数据库,拥有这四个表

第一个,部门

//DEPARTMENT
D#        DNAME
------------------
1        RESEARCH
2          IT
3        SCIENCE


第二个,员工

//Employee
E#     ENAME         D#
-----------------------
1      ALI           1
2      SITI          2
3      JOHN          2
4      MARY          3
5      CHIRS         3


三,项目

//PROJECT
P#     PNAME        D#
-----------------------
1     Computing     1
2     Coding        3
3     Researching   3


四,沃克森

//WORKSON
E#     P#     Hours
--------------------
1      1       3
1      2       5
4      3       6


所以我的输出应该是这样的

E#       ENAME      D#       TOTAL HOURS/W
--------------------------------------------
1         ALI       1              8
2        SITI       2              0
3        JOHN       2              0
4         MAY       3              6
5        CHIRS      3              0


显示0,因为该员工没有要处理的项目。

我目前的陈述

SELECT E#,ENAME,D# and sum(Hours) as TOTAL HOURS/W
    FROM EMPLOYEE,PROJECT,WORKSON
    WHERE EMPLOYEE.P#


不知道应该如何选择

最佳答案

您应该使用像这样的左连接。您只需要2个表employeeworkson

试试这个查询:

SELECT e_tbl.E#, e_tbl.ENAME, e_tbl.D#,
coalesce(SUM(w_tbl.Hours), 0) as "Total Hours/W"
FROM
EMPLOYEE e_tbl LEFT JOIN WORKSON w_tbl
ON e_tbl.E# = w_tbl.E#
GROUP BY e_tbl.E#

关于mysql - 带有四个具有主键和外键的不同表的SELECT sql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23309612/

10-15 10:46