我的php中有这个查询。我需要做的是。我有例子。
上午8:30至上午10:00。所以我希望这次检查开始和时间结束是否已经存在于数据库中,或者它是否在一段时间内。
输入:上午8:30至上午10:00 ==数据库:上午8:30至上午10:00。 - >已经 存在
输入:上午8:30至11:30 ==数据库:上午8:30至上午10:00。 - >已经
之间存在输入:上午9:30至11:30 ==数据库:上午8:30至上午10:00。 - >已经
之间存在输入:上午7:00至11:30 ==数据库:上午8:30至上午10:00。 - >已经
之间存在输入:上午7:00至上午10:00 ==数据库:上午8:30至上午10:00。 - >已经
之间存在输入:上午7:00至上午9:30 ==数据库:上午8:30至上午10:00。 - >已经
之间存在
下面的代码有效,但如果时间开始或时间结束在现有的时间段之间......它仍然会继续,并且不会告诉我它已经存在于一段时间之间。我不知道我缺少什么。谢谢!
SELECT *
FROM room_schedules
INNER JOIN rooms
ON room_schedules.Room_ID = rooms.Room_ID
WHERE
(
(
'[Start]' BETWEEN room_schedules.Starts AND room_schedules.Ends
) AND (
'[End]' BETWEEN room_schedules.Starts AND room_schedules.Ends
)
) OR (
(
room_schedules.Starts BETWEEN '[Start]' AND '[End]'
) AND (
room_schedules.Ends BETWEEN '[Start]' AND '[End]'
)
)
答案 0 :(得分:0)
只需使用COUNT(*)
即可。它会为您提供结果的总行数。像这样:
SELECT COUNT(*)
FROM room_schedules
INNER JOIN rooms
ON room_schedules.Room_ID = rooms.Room_ID
WHERE
room_schedules.Starts BETWEEN '07:00:00' AND '10:00:00'
AND
room_schedules.Ends BETWEEN '10:00:00' AND '12:00:00'
然后在你的php中,你只需要检查结果,例如:
$total = /* get from query */
if($total > 0)
echo $total.' results';
else
echo 'Data Not Exist';