簡體   English   中英

有沒有辦法在sql中執行此內部聯接?

[英]Is there a way to perform this inner join in sql?

我有兩個表的sql數據庫。 第一個表被命名為Workers,具有以下列:id,name和包括值:

1, Mark
2, David
3, Peter

第二個名為WorkingHours,其名稱為:id,小時,日期,並包含值:

1, 5, '2019-07-20'
1, 4, '2019-07-21'
3, 6, '2019-07-10'
3, 4, '2019-07-20'

我想進行查詢以顯示``2019-07-20''的視圖,如下所示:

id     name       hours
1      Mark       5
2      David  
3      Peter      4

如果我的查詢是:

SELECT W.*, H.hours
  FROM Workers W
    INNER JOIN WorkingHours H ON W.id = H.id
  WHERE H.date = '2019-07-20'

我不會得到大衛。 我怎么也能得到他?

您需要使用left joincoalesce()來為'2019-07-20'上沒有時間的工人獲得0小時

SELECT W.*, coalesce(H.hours, 0) hours 
FROM Workers W 
    LEFT JOIN WorkingHours H ON W.id = H.id AND H.date = '2019-07-20'

如果不希望為0,請使用H.hours而不是coalesce(H.hours, 0) ,它將返回null

暫無
暫無

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

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