Вашият въпрос е доста труден за проследяване, тъй като колоните в заявката ви не съвпадат с колоните в примерните данни. Освен това нямате желани резултати.
Мисля, че трябва да преместите сравненията на дати в on
клауза и след това потърсете несъответствия в where
:
select rct.room_category AS room_category,
group_concat(rc.room_name separator ',') AS vacant_beds
from room_charges rc join
room_category rct
on rc.room_category = rct.id left join
patient_detail pd
on rc.id = pd.room_name and
(pd. discharge_date_time is null or
curdate() between admission_date_time and discharge_date_time)
where pd.id is null
group by rc.room_category ;