第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

檢查重疊以及是否已取值

檢查重疊以及是否已取值

PHP
精慕HU 2022-12-23 16:34:16
我正在嘗試編寫一個(gè) SQL 查詢,該查詢必須檢查兩個(gè)小時(shí)之間是否存在重疊以及是否已經(jīng)選擇了某些值。例如,你在一個(gè)表中有一條記錄,你需要用數(shù)據(jù)填充一個(gè)表單。使用 SQL 查詢,您需要檢查表中的小時(shí)數(shù)與您在表單中選擇的小時(shí)數(shù)之間是否存在重疊,但您還需要檢查表中選擇的其他數(shù)據(jù)是否尚未在表中使用與表中的另一個(gè)數(shù)據(jù)。我的問題是檢查值是否已經(jīng)在表中,這樣我就可以返回一個(gè)錯(cuò)誤,指出這些數(shù)據(jù)已被使用。明確地說,您有那些需要驗(yàn)證的數(shù)據(jù)。你有時(shí)間、房間、老師和課程。您必須檢查是否檢測到時(shí)間重疊(我對這部分沒問題),但您還需要檢查老師是否已經(jīng)在某個(gè)房間里教授某門課程(您不能讓老師在兩個(gè)不同的地方),如果一個(gè)房間還沒有被占用,也如果一門課程還沒有被占用。我實(shí)際上有這個(gè) SQL 查詢,但它不是一個(gè)正確的查詢,因?yàn)楫?dāng)我用兩個(gè)小時(shí)(例如:08:00 和 12:00)、一個(gè)老師(例如:老師 A)、一個(gè)房間(例如:房間 A)進(jìn)行插入時(shí)和課程(例如:課程 A),沒有問題,因?yàn)樗潜碇械牡谝粋€(gè)插入。但是當(dāng)我在不換老師的情況下?lián)Q房間(A房間到B房間)檢查是否會(huì)報(bào)錯(cuò)(因?yàn)槔蠋煵荒芡瑫r(shí)在兩個(gè)不同的地方),有' 沒有錯(cuò)誤,并且在表中進(jìn)行了插入。我會(huì)給你我的 SQL 查詢:select * from `reservations`where heure_debut <= '08:00' and heure_fin >= '08:00' and heure_debut <= '09:00' and heure_fin >= '09:00' and reservations.local_id = 1 and exists (select * from `reservations` where reservations.enseignant_id = 1) and exists (select * from `reservations` where reservations.Event_id = 1)我試圖了解我失敗的地方,但我不知道在哪里。預(yù)先感謝您的回答。
查看完整描述

1 回答

?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

我認(rèn)為你采取了錯(cuò)誤的方式,對我來說這是一個(gè)否定的檢查,如果它給你帶來超過 0 行,它將失敗:


是否有任何課程在同一地點(diǎn)同時(shí)進(jìn)行?

或者我的老師是否應(yīng)該同時(shí)開設(shè)任何其他課程?

如您所見,OR您的查詢中有一個(gè) I can't find 。(我不明白你Event_id的意思,所以我可能會(huì)在這里錯(cuò)過任何東西)


在制品

這部分至少可以回答你問題的一大部分,告訴我什么仍然不適合你。


SQL小提琴

查詢 1:


SET -- this is your input you try to check 

@local_id = 1, 

@heure_debut = '08:00', 

@heure_fin = '09:00',

@enseignant_id = 1

結(jié)果


查詢 2:


-- if it return more that 0 record, then you have a conflict

SELECT 

  r.id AS id_line_in_conflict

  , r.* -- for debug

FROM `reservations` r

WHERE 

  heure_debut < @heure_fin 

  AND heure_fin > @heure_debut 

  AND (

    local_id = @local_id -- check if the local is empty

    OR enseignant_id = @enseignant_id -- check if the teacher is free

    )

結(jié)果


| id_line_in_conflict | id | numero_semaine |                 date | heure_debut | heure_fin | Event_id | horaire_id | local_id | enseignant_id |

|---------------------|----|----------------|----------------------|-------------|-----------|----------|------------|----------|---------------|

|                   1 |  1 |             16 | 2020-04-17T00:00:00Z |       08:00 |     12:00 |        1 |          4 |        1 |             1 |

|                   2 |  2 |             16 | 2020-04-17T00:00:00Z |       08:00 |     09:00 |        1 |          4 |        2 |             1 |

查詢 3:


SET -- this is your input you try to check 

@local_id = 1, 

@heure_debut = '14:00', 

@heure_fin = '15:00',

@enseignant_id = 3

結(jié)果


查詢 4:


-- if it return more that 0 record, then you have a conflict

SELECT 

  r.id AS id_line_in_conflict

  , r.* -- for debug

FROM `reservations` r

WHERE 

  heure_debut < @heure_fin 

  AND heure_fin > @heure_debut 

  AND (

    local_id = @local_id -- check if the local is empty

    OR enseignant_id = @enseignant_id -- check if the teacher is free

    )

結(jié)果



查看完整回答
反對 回復(fù) 2022-12-23
  • 1 回答
  • 0 關(guān)注
  • 76 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號