两个IF语句并连接MYSQL


Two IF statements and join MYSQL

我一直在尝试为会议室做一个日计划。我有两个表:

1) dayplanner: day以5分钟为间隔值=就是00:05:00 00:10:00…23:55:00

2) reservations:名称、开始和结束值=[约翰,12:00:00 12:30:00],[鲍勃,14:00:00 14:45:00]等

我的目标是使用一个查询和两个IF语句,这样我就可以检查开始时间和

之间的内容。

:

[Time] [in - between]

12:00:00 true true
12:05:00 true true
............................

12:35:00 false false

$query = "SELECT *,
          IF(d.dayplanner_time = a.reservations_starttime,'true','false') AS reserved,
          IF(d.dayplanner_time > a.reservations_start  && d.dayplanner_time <  a.reservations_finish,'true','false') AS inbetween
          FROM dayplanner d 
          LEFT JOIN reservations a 
         ON d.day_time = a.reservations_start OR d.dayplanner_time = a.reservations_finish
          WHERE d.dayplanner_time BETWEEN '12:00:00' AND '18:00:00';";

查询在reserd_column中只给出一个true,但是什么都不起作用。我希望你能帮助我。

您正在将您的时间间隔与开始或结束的预订匹配在该间隔上。根据定义,如果时间相等,则它们不能大于或小于自身,这意味着您要明确地忽略与该时间间隔不完全匹配的预订。

比较应该是

SELECT d.dayplanner_time,d.day_time,
      IF(d.dayplanner_time = a.reservations_starttime,'true','false') AS reserved,
      IF(a.reservations_start is null, false, true) AS inbetween
      FROM dayplanner d 
      LEFT JOIN reservations a 
      ON (d.day_time >= a.reservations_start AND d.dayplanner_time <= a.reservations_finish)
      WHERE d.dayplanner_time BETWEEN '12:00:00' AND '18:00:00';

的意思是"如果至少有一个预订在我之前开始,在我之前结束,那么介于两者之间"。

请记住,当执行LEFT JOIN时,所有不为空的内容都意味着它们匹配WHERE子句。这就是为什么当reservations start为空时,我只说in_between为假。

效果很好现在来看看如何填充

之间的空格