Mysql查询如何为空值返回组?

时间:2015-04-12 15:48:59

标签: php mysql

我有这个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失踪了。 我怎么能做到这一点?

1 个答案:

答案 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两个查询。