两个IF语句并加入MYSQL

时间:2014-08-17 20:47:11

标签: php mysql if-statement

我一直在努力为会议室制作一个日计划员。  我有两张桌子:

1)dayplanner:每隔5分钟分开一天 值= 00:00:00,00:05:00,00:10:00 ...... 23:55:00

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

我的目标是使用一个带有两个IF语句的查询,这样我就可以检查开始时间和它们之间的内容

像这样:

[时间] [保留] [中间]

12:00:00真的是真的 12:05:00真的是真的 ............................

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';";

查询在reserverd列中只提供一个true但没有任何效果。 我希望你能帮助我。

2 个答案:

答案 0 :(得分:1)

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

比较应该是

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时,所有非null都意味着它们与WHERE子句匹配。这就是为什么我只说保留开始时in_between是假的。

答案 1 :(得分:0)

工作正常 现在弄清楚我如何填补

之间的空间
相关问题