簡體   English   中英

從多表查詢中查找缺少的日期

[英]Find missing dates from multi table query

我正在尋找一個查詢,該查詢可以根據資源必須預測預訂資源的可用性的技能來計算日期表中的缺失條目。 我不確定是否可以做到,我當然在邏輯上掙扎!

桌子

日期

ID     dateFrom        StaffID
1       01-06-2014         1
2       02-06-2014         1
3       03-06-2014         1
4       04-06-2014         1
5       05-06-2014         1
6       01-06-2014         2
7       03-06-2014         2
8       04-06-2014         2
9       05-06-2014         2
10      06-06-2014         2

(工作人員ID 1的6日為免費日期,工作人員ID 2的2日為免費日期)

員工

StaffID    Name
  1        John
  2        Paul

技能專長

ID     StaffID  SkillID
1        1        1
2        1        2
3        1        3
4        2        2
5        2        3
6        2        4

因此,我想寫一個查詢,說在六月,對於每種技能,沒有X天可以預訂。 這有可能嗎? 尋找不存在與人員表聯接的記錄?

我整理了一個日歷表,可以確定沒有預訂的日子,但老實說,我一直在努力。

任何幫助將不勝感激!!

史蒂夫

編輯:DB是SQL 2005。

預期輸出(如果可能)

SkillID    Number of days available

  1              20
  2              22
  3              14

等等

創建一個包含所有可能日期的日歷表(是否已預訂)

select count(distinct ad.calendarDate), s.SkillID
from all_dates ad
cross join skills s
where not exists (
    select 1 from
    dates where dateFrom = ad.calendarDate
    and StaffID = s.StaffID
)
group by s.SkillID

如果我了解您的問題,那么您的查詢將如下所示:

Select sum(temp.nbrDate), temp.SkillID from
  (Select s.SkillID, count (d.ID) as nbrDate from Skills s, Dates d
   where s.StaffID = d.StaffID
  Group by SkillID) temp
group by SkillID

如果要添加日期范圍,請在您要關閉的位置添加:

and d.DateForm between '01-06-2014' and '30-06-2014'

暫無
暫無

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

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