Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 第二个表中有条件的SQL查询_Mysql - Fatal编程技术网

Mysql 第二个表中有条件的SQL查询

Mysql 第二个表中有条件的SQL查询,mysql,Mysql,我有两张桌子:房间和预定的。在明细表中,有带有开始时间、结束时间和房间id的条目,这些条目在预订房间时显示。rooms表包含每个房间的id项 开始时间和结束时间只包含小时数,例如“9”和“11”,表示房间从9点到11点已预订 我想显示当前可用房间的列表。为此,我需要一个从rooms表中选择所有房间id的查询,条件是在scheduled for current hour中没有条目,因此房间id的begin_time和end_time之间不存在当前小时 我尝试了以下方法: 选择不同的id ,房间号

我有两张桌子:房间和预定的。在明细表中,有带有开始时间、结束时间和房间id的条目,这些条目在预订房间时显示。rooms表包含每个房间的id项

开始时间和结束时间只包含小时数,例如“9”和“11”,表示房间从9点到11点已预订

我想显示当前可用房间的列表。为此,我需要一个从rooms表中选择所有房间id的查询,条件是在scheduled for current hour中没有条目,因此房间id的begin_time和end_time之间不存在当前小时

我尝试了以下方法:

选择不同的id ,房间号 从房间 不存在的地方选择房间\u id 从预定 其中rooms.id=scheduled.rooms\u id 和日期=CURDATE 时间不在“开始时间”和“结束时间”之间`

但这不起作用,它只显示当前日期计划中不存在id的房间,而不显示时间条件。我也尝试了一些连接,但我不太理解它们。在所描述的条件下,如何进行从rooms表返回id的查询

更新:
我在MySQLFiddle中构建了数据库:

尝试以下SQL查询:

SELECT DISTINCT id
, room_nr
FROM rooms
WHERE NOT EXISTS(SELECT room_id
    FROM scheduled
    WHERE rooms.id = scheduled.room_id
    AND date = CURDATE()
    AND HOUR(CURTIME()) NOT BETWEEN `begin_time` AND `end_time`)

语法错误是?我认为问题在于日期函数。我猜你想要凝乳@notulysses,语法错误是:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第12行的“开始时间”和“结束时间”之间使用near和HOURDATE的正确语法。我尝试了CURDATE,但不幸的是,这并不能解决问题。@BasC您没有在所有地方更改日期。如果你愿意的话,在这里也改变它——日期=DATE,考虑下面这个简单的两步过程:1。如果您还没有这样做,请提供适当的DDL和/或SQLFIDLE,以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。谢谢,此查询提供的是输出,而不是语法错误。我认为它有效!我要进一步测试一下!查询可以工作,但没有选择正确的条目。我将发布一个SQL-FIDLE。您的查询确实选择了在当前日期没有预定条目的房间中的所有id。时间条件还不起作用。你能研究一下吗?@BasC你能举一个开始时间和结束时间字段中的值的例子吗?它现在起作用了,实际上它必须是CURTIME或now。我也有一个双不在哪里不存在,不在之间,所以我删除了不在不在之间,现在它的工作!