我有这个mysql查询返回按类别分组的空床/房间。但是如果该类别中没有空间,则该组未显示,即使没有空房,该组也会显示空白/空值。
select `rct`.`room_category` AS `room_category`,
group_concat(`rn`.`room_name` separator ',') AS `vacant_beds`
from ((`room_name` `rn` join `room_category`
`rct` on((`rn`.`room_category` = `rct`.`id`)))
left join `patient_detail` `pd` on(((`rn`.`id` = `pd`.`bed_type`)
and (isnull(`pd`.`discharge_date`) or (now() between `pd`.`admission_date` and `pd`.`discharge_date`)))))
where isnull(`pd`.`id`) group by `rn`.`room_category`
查询结果如下: room_category vacant_beds
MALE GENERAL WARD MG-5
FEMALE GENERAL WARD FG-2,FG-3,FG-4
MOTHER CHILD WARD MC-1,MC-3,MC-4
NICU NICU-8,NICU-4,NICU-5,NICU-6,NICU-1,NICU-7,NICU-2
CLASSIC CL-9,CL-4,CL-5,CL-7,CL-8
DELUXE DLX-6,DLX-3,DLX-4,DLX-5
在上述结果中,由于没有空置的床,所以Twin失踪了。 我怎么能做到这一点?
答案 0 :(得分:0)
您需要查询:一个用于您已经拥有的空床,另一个用于没有空床的团体,此处还包括"no vacant" AS vacant_ beds
。
创建第二个查询的一种方便方法是匹配第一个查找缺失类别的查询:SELECT rct.Room_category, " " as vacant_room FROM rct LEFT JOIN old_query on ... WHERE old_query.room_category IS NULL
然后只需要UNION
两个查询。