簡體   English   中英

帶有四個具有主鍵和外鍵的不同表的SELECT sql

[英]SELECT sql with four different tables with primary key and foreign key

對於我的數據庫,擁有這四個表

第一個,部門

//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#

不知道應該如何選擇

您需要使用GROUP BY和JOINS,以實現您的輸出

您應該像這樣使用左連接。 您只需要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#
SELECT E.E#,
       E.ENAME,
       E.D#,
       sum(Hours) AS TOTAL HOURS/W
FROM Employee AS E
JOIN WORKSON AS W ON E.E# = W.E#
GROUP BY E.E#,
         E.ENAME,E.D#

用這個 :)

使用給定的輸出,您不需要連接所有表,這可以通過加入employee並以

select
e.`E#`,
e.ENAME,
e.`D#`,
coalesce(tot,0) as `TOTAL HOURS/W`
from Employee e
left join
(
  select `E#`,
  sum(Hours) as tot
  from WORKSON
  group by `E#`
)w
on w.`E#` = e.`E#`
group by e.`E#`

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM