亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據條件選擇輪班時間

根據條件選擇輪班時間

C#
慕村9548890 2021-10-24 19:19:15
我有三個表,例如員工、時間槽和調度。例如Time Slots table :  id     time  1     08:00:00    10:00:00  2     10:00:00    12:00:00  3     16:00:00    18:00:00  4     08:00:00    16:00:00   5     14:00:00    18:00:00Employee Table: EMP1 EMP2 EMP3 EMP4Scheduling table : EMP    TIMESLOTS ID  EMP1     1 EMP2     2 EMP3     4我需要在 Gridview 的時間段中顯示空閑員工的列表,即由于 EMP3 分配在 ( 08:00:00 16:00:00) ,那么它不應該顯示在 08:00 之間的任何時間段中:00 16:00:00,但可以在08:00:00之前和16:00:00之后的任何時間段顯示,同樣適用于所有排定的員工。如果任何員工沒有安排在任何時間段,那么該員工應該在每個時間段都有空。即,EMP5 應該在所有時隙中可用。My output should be like this  :   EMPLOYEES          FREE TIME SLOTS    EMP1                   10:00:00    12:00:00    EMP1                   14:00:00    18:00:00    EMP1                   16:00:00    18:00:00    EMP2                   08:00:00    10:00:00    EMP2                   16:00:00    18:00:00    EMP2                   14:00:00    18:00:00    EMP3                   16:00:00    18:00:00    EMP4                   08:00:00    10:00:00    EMP4                   10:00:00    12:00:00    EMP4                   16:00:00    18:00:00    EMP4                   08:00:00    16:00:00     EMP4                   14:00:00    18:00:00任何幫助都會真正appreaciated。提前致謝
查看完整描述

3 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

使用 across join生成員工和時間段的所有組合。然后使用 a left join(or not inor not exists) 過濾掉那些存在的:


select e.emp, ts.*

from employee e cross join

     timeslots ts left join

     scheduling s

     on s.emp = e.emp and s.timeslot_id = ts.timeslot_id

where s.emp is null;


查看完整回答
反對 回復 2021-10-24
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

SELECT e.*, t.* 

            FROM employee e 

            CROSS JOIN 

            TimeSlot t

                WHERE NOT EXISTs (

                                    SELECT 0 FROM Scheduling s2 

                                                JOIN TimeSlot t2 

                                                        ON s2.empid = e.empid 

                                                            AND t2.endTime > t.StartTime 

                                                            AND t2.startTime < t.EndTime 


                                )  --where there is not some other overlapping timeslot allocated



查看完整回答
反對 回復 2021-10-24
  • 3 回答
  • 0 關注
  • 189 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號