我有一个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在上面的结果中,双胞胎丢失了,因为它没有空床。我如何才能做到这一点?
发布于 2015-04-13 00:03:08
你需要查询:一个是你已经有的空置床位,另一个是没有空置床位的群体,这里也包括"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操作。
https://stackoverflow.com/questions/29591335
复制相似问题