Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL:现在的空置/占用房间_Mysql_Sql - Fatal编程技术网

MYSQL:现在的空置/占用房间

MYSQL:现在的空置/占用房间,mysql,sql,Mysql,Sql,我有三张桌子:房间费用、房间类别和病人详细信息 room_category id room_category 1 twin 2 classic 3 Deluxe room_charges id room_name room_category 1 tw1 1 2 tw2 1 3 cl1 2 4 cl2 2 5 dl1 3 patient_detail id pat

我有三张桌子:房间费用、房间类别和病人详细信息

room_category
id room_category
1      twin
2      classic
3      Deluxe

room_charges
id room_name room_category
1    tw1        1
2    tw2        1
3    cl1        2
4    cl2        2
5    dl1        3

patient_detail

id patient_name room_name room_category admission_date_time discharge_date_time discharged
1   Mr x             1        1          10-12-14 10:40        12-12-14 08:40      1
2   Mr y             1        1          12-12-14 11:40        15-12-14 13:10      1
3   mr z             1        1          15-12-14 14:40             null          null
我正在使用查询查找空置的\u床位详细信息,但根据患者\u详细信息,房间\u id 1已被占用,但我将其空置。 我使用的查询如下所示:

select `rc`.`id` AS `id`,
        `rct`.`room_category` AS `room_category`,
        group_concat(`rc`.`room_name` separator ',') AS `vacant_beds` 
from ((`room_charges` `rc` 
       left join `patient_detail` `pd` on((`rc`.`id` = `pd`.`room_name`))) 
      join `room_category` `rct` on((`rc`.`room_category` = `rct`.`id`))) 
where ((`pd`.`discharged` = 1)  or    isnull(`pd`.`admission_date_time`))  
group by `rc`.`room_category` 
having max(admission_date_time)
我正在创建一个视图以获取空床位信息,无法使用子查询。 非常感谢您为此提供合适的解决方案

好的,我把我想要的结果放在下面:

room_category room_name
twin            tw2
classic         cl1,cl2
deluxe          dl1

这意味着根据患者详细信息表,房间tw1仍然被占用,不应显示在查询结果中。

您的问题很难理解,因为您查询中的列与示例数据中的列不匹配。而且,您没有期望的结果

我认为您需要将日期比较移到
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 ;

您的房间id 1为1,因此返回?你在期待什么?我想从该房间的上次记录中检索比较的房间。因此,你应该检查
是否为null
?即使如此,我还是将该房间视为空房间,当它应该显示为已占用时。请编辑您的问题并显示所需结果。您好@Gordon Linoff-我已用所需结果更新了问题。在您的回答中,您再次建议在入院日期时间和出院日期时间之间使用
curdate()。由于在患者出院之前,出院日期时间将为
00或空
,因此我怀疑
curdate()是否有效。