我有三张桌子(医生、诊所医生计时、医院医生计时)。两个时间表都包含医生表的 id 作为外键,它还存储医生的从和到时间。现在我需要选择在给定时间去诊所或医院的医生 ID,即往返。
我写了一个查询,它适用于诊所或医院,但不能同时适用。
SELECT
DISTINCT
SQL_CALC_FOUND_ROWS
`doctor`.`id`,
`doctor`.`name`
FROM
`doctor`
JOIN clinic_doctor_timings AS cl
ON cl.doctor_id = doctor.id
WHERE
TIME_FORMAT(`cl`.`from`, %h:%i %p) >= '05:00 AM'
AND TIME_FORMAT(`cl`.`to`, %h:%i %p) >= '10:00 PM'
上面的查询工作正常,但是在我想结合 Clinic_doctor_timings 和 hospital_doctor_timings 表之后,我没有得到我期望的结果。
.........
JOIN clinic_doctor_timings AS cl
ON cl.doctor_id = doctor.id
JOIN hospital_doctor_timings AS hs
ON hs.doctor_id = doctor.id
WHERE
(TIME_FORMAT(`cl`.`from`, %h:%i %p) >= '05:00 AM'
AND TIME_FORMAT(`cl`.`to`, %h:%i %p) <= '10:00 PM')
XOR
(TIME_FORMAT(`hs`.`from`, %h:%i %p) >= '05:00 AM'
AND TIME_FORMAT(`hs`.`to`, %h:%i %p) <= '10:00 PM')
我需要在独立于诊所和医院的给定时间为医生安排诊所和医院。