Выбор с помощью фильтров - PullRequest
1 голос
/ 29 ноября 2011

Я разрабатываю систему бронирования для клиники, поэтому моя цель состоит в том, чтобы я хотел отобразить доступные смены врачей, которые еще не зарезервированы, чтобы пациент проверял наличие определенного врача в конкретную дату и смену.
У меня 2 таблицы

Booking (ID, DocID, shift_id, Date)
Shift (ID, name, DocID) 

MySQL запрос на выбор, который не работает:

SELECT  Shift.ID, Shift.name, Shift.DocID
FROM    Shift INNER JOIN
        Booking ON Shift.ID = Booking.shift_id
WHERE   (Shift.DocID = @DoctorID) AND (Booking.DocID <> @DoctorID) 
 AND    (Booking.shift_id <> @ShiftID) AND (Booking.Date <> @VisitDate)

так что, пожалуйста, любые идеи ???

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Вы можете попробовать

SELECT s.* FROM Shift
LEFT JOIN Booking b 
    ON s.id = b.shift_id
   AND s.DocID = b.DocID
WHERE b.id IS NULL
   OR b.date <> visit_date
0 голосов
/ 29 ноября 2011

Метод левого соединения:

SELECT s.* FROM Shift s
LEFT JOIN Booking b 
    ON s.id = b.shift_id
   AND s.DocID = b.DocID
   AND b.date = @visit_date
WHERE s.ID = @ShiftID and s.DocID = @DocID and b.id IS NULL

Вы также можете написать варианты, используя предложения NOT EXISTS или NOT IN - дело в том, что вы хотите сдвиги, когда для этого врача нет резервирования в этот день

...