我有一個INSERT SQL查詢,需要檢查該條目是否會導致重複預訂,並且該2個用戶(醫生和患者)與同一診所。 (發現更容易在考慮到情況說明),在SQL我是:不存在檢查並等於「=」檢查一起失敗,但獨立工作
WITH ins (MedStaffID, PatientID, TimeSlot, AppDate)
AS (SELECT 1, 6, 10, DATEADD(day, 1, CAST(GETDATE() AS DATE)))
INSERT INTO Appointments (MedStaffID, PatientID, TimeSlot, AppDate)
SELECT ins.MedStaffID, ins.PatientID, ins.TimeSlot, ins.AppDate
FROM ins
WHERE
NOT EXISTS
(
SELECT *
FROM Appointments
WHERE (MedStaffID = ins.MedStaffID OR PatientID = ins.PatientID)
AND TimeSlot = TimeSlot
AND AppDate = ins.AppDate
)
AND
(
SELECT Clinic
FROM Users UD
WHERE UD.ID = ins.MedStaffID
)
=
(
SELECT Clinic
FROM Users UD
WHERE UD.ID = ins.PatientID
);
的2 WHERE檢查正常工作,沒有其他,但即使它應該在一起時,總是導致INSERT不會繼續通過兩項檢查。
例用戶表:
ID Clinic Role Forename n'otherstuff
1 1 Doctor Bob Potato
2 1 Patient Jim Cake
3 1 Patient Laura Tart
4 2 Doctor Sally Muffin
5 2 Patient Khaaan Lolly
實例約會表:
ID MedStaffID PatientID TimeSlot Date
1 1 2 1 *today
2 1 2 2 *today
3 1 3 4 *today
4 4 5 2 *today
所以插入需要防止另一個預約醫生,如果他已經有那個時間和日期的預約,也對於病人。
它還需要確保醫生和患者與同一診所。
個別檢查是做他們的工作,但我需要他們一起工作,還需要另一次檢查以確保放置在「MedStaffID」字段中的ID與具有「Role」「Doctor」的用戶綁定,但現在我被困在這兩次檢查中。
啊謝謝你的工作,沒有想到這一點,你知道爲什麼讓他們像我這樣設置沒有工作,雖然,好奇。 – Vereonix