Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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返回具有联接表的项_Mysql_Date_Join - Fatal编程技术网

MySQL返回具有联接表的项

MySQL返回具有联接表的项,mysql,date,join,Mysql,Date,Join,我正在做一个项目,在这个项目中,我必须寻找每一个在某个特定时刻免费的领域,但我有点困惑于如何做到这一点 我有两张桌子区域和保留区 该地区有: 身份证件 名字 预订有: 身份证件 区域id, 开始日期, 结束日期 我想返回的是在特定日期没有预订的所有区域。知道怎么做吗?查询: $date = '2016-2-2'; SELECT a.name FROM area AS a, reservation AS r WHERE (r.start_date <> '$date' OR

我正在做一个项目,在这个项目中,我必须寻找每一个在某个特定时刻免费的领域,但我有点困惑于如何做到这一点

我有两张桌子区域保留区

该地区有: 身份证件 名字

预订有: 身份证件 区域id, 开始日期, 结束日期

我想返回的是在特定日期没有预订的所有区域。知道怎么做吗?

查询:

$date = '2016-2-2';
SELECT a.name
FROM area AS a,
     reservation AS r
WHERE (r.start_date <> '$date' OR r.end_date <> '$date')
$date='2016-2-2';
选择一个名称
从面积上看,,
作为r的预订
其中(r.开始日期'$date'或r.结束日期'$date')
假设数据库中的日期格式为
Y-m-d

尝试使用以下查询:

SELECT a.name
FROM area AS a
LEFT JOIN reservation AS r ON r.area_id = a.id 
AND :myDate between r.start_date AND r.end_date 
WHERE r.id IS NULL

是否要在
开始日期
结束日期
中检查日期?是否有任何代码?这似乎不起作用。当完全没有预订时,它不会返回任何内容,而应该返回所有内容。当只有一个区域有保留时,它会将相同的开始日期添加到所有其他区域。如果您添加具有预期结果的虚拟数据,例如我有3个区域,区域a、区域B、区域C,这将非常有用。区域a在2016-2-2和2016-2-4之间有保留。B区和C区没有。当我请求2016-2-3所有免费区域时,我希望它只返回B和C。那么输出应该是什么?只需区域名称即可。目前,如果我请求2016-2-3,则不返回任何一个,如果我请求2016-2-5,则返回所有3个