如何使用sql LEFT JOIN查询

时间:2015-11-20 00:22:17

标签: mysql

我有两张表预订 CurrentDay_Booking

**booking**:

ID  bookingdate  TableID   starttime   endtime    userID   NumberOfPeople  phoneNumber  EmailID    
 1  2015-11-20   1         11:15:00    11:55:00   john     2               21029917     gmail.com    
 2  2015-11-20   1         11:15:00    11:40:00   riyas    2               21029917     gmail.com    
 3  2015-11-20   1         12:15:00    12:45:00   riyas    2               21029917     gmail.com
 4  2015-11-21   2         11:20:00    11:30:00   riyas    2               21029917     gmail.com

**CurrentDay_Booking**:

ID  bookingdate TableID    starttime   endtime    userID   NumberOfPeople  phoneNumber  EmailID    
 1  2015-11-20   1         11:15:00    11:55:00   john     2               21029917     gmail.com

我的问题是:需要将预订表格中的数据添加到 CurrentDay_Booking ,而不是等于 CurrentDay_Booking ID并等到当前日期和开始时间和结束时间或等于当前时间

我的当前时间和当前日期使用不同的查询

我不知道如何使用where子句和LEFT JOIN进行查询

这是我的问题:

SELECT
    t.ID,
    t.bookingdate,
    t.TableID,
    t.starttime,
    t.endtime,
    t.userID,
    t.NumberOfPeople,
    t.phoneNumber,
    t.EmailID
FROM booking t
LEFT JOIN CurrentDay_Booking s 
ON t.ID = s.ID
WHERE s.ID is null
    and t.bookingdate='" . $cur_gmt_date . "'
    and t.starttime <= '" . $cur_gmt_time24 . "'
    and t.endtime => '" . $cur_gmt_time24 . "';

我认为我把条件放错了地方。

请提供任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

根据您所描述的内容,由于在您描述的场景中添加了表格,因此创建表格没有任何意义。结果表是相同的,所以为什么不直接从表中进行直接查询,保存所讨论的特定日期的所有预订。基于它已经存在或不存在的另一个表不需要加入

SELECT
      t.ID,
      t.bookingdate,
      t.TableID,
      t.starttime,
      t.endtime,
      t.userID,
      t.NumberOfPeople,
      t.phoneNumber,
      t.EmailID
   FROM 
      booking t
   WHERE 
      t.bookingdate='" . $cur_gmt_date . "'

根据(预订日期)在您“预订”表上的索引,它不必比较已经存在的内容。然后你不必担心每天都要清除它,只是为了开始新的一天。