首页 > 解决方案 > 当我尝试使用 php 和 sql 在“餐厅”中预订餐桌时遇到问题

问题描述

我使用了这个查询:

SELECT 
  tavolo.ID_Tavolo
FROM 
  tavolo
  LEFT JOIN prenota 
    ON tavolo.ID_Tavolo = prenota.ID_Tavolo
WHERE 
  tavolo.ID_Tavolo NOT IN 
    (SELECT 
      Prenota.ID_Tavolo 
     FROM 
      prenota) 
  OR tavolo.ID_Tavolo IN 
    (SELECT 
      prenota.ID_Tavolo 
     FROM 
       prenota 
     WHERE 
       Data_Pren != '2020-06-04' 
       OR Data_Pren = '2020-06-04' 
       AND Ora_Pren NOT BETWEEN '19:00:00' AND '20:30:00' 
       AND ADDTIME(Ora_Pren, "1:30:00.000000") NOT BETWEEN '19:00:00' AND '20:30:00')
ORDER BY Tavolo.ID_Tavolo

当数据库中没有数据时它可以工作,但是在创建 3 个预订(我有 3 个表)之后,它每次都开始使用相同的 ID(7)不检查日期。

这些是我的桌子:

Prenota 表(结构)

在此处输入图像描述

Prenota 表(数据)

在此处输入图像描述

Tavolo 表(结构)

在此处输入图像描述

Tavolo 表(数据)

在此处输入图像描述

(查询通过检查来工作:

1) 如果 ID 在“prenota”表中不存在,请给我 ID;

2) 如果 ID 已经存在并且日期不同日期相同但时间不在注册时间和 +1h30m 之间添加1h30m 以检查在该小时内是否所有表仍然不可用。

这是我尝试查询的屏幕:

在此处输入图像描述

我只是想知道如何通过检查来预订工作表:

1)表的ID

2) 已预订餐桌的日期

3) 已订桌时间

4)如果发现“差距”,请检查用户选择的时间和时间+1h30m(您可以留在餐桌的最长时间)进行预订

这是尝试的链接:https ://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=87563a5b3f14efee1ffc535e14675f06

标签: mysqlsql

解决方案


推荐阅读