如何选择下一个预约Mysql?

时间:2013-03-11 04:49:52

标签: mysql

我有一个表calles预订,它包含每辆车的所有预订。 我有一个reservationStatus字段,表示1 =预定2 =待处理,0 =已取消。

所以我想根据当前待处理记录从表中选择下一个预约日期。

所以当我运行这段代码时

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2

这将给我当前待定的预订。现在从这里开始,我想返回dateFrom字段小于或等于前一个dateTo的第一条记录?

可以在一个select语句中完成吗?我知道它可以使用2个单独的语句来完成,但是我想知道它是否可以在一个查询中用MySql编写?

编辑 - 问题中添加了新位

这就是我用2个查询和一些PHP解决它的方法。

$sql = $db->query('SELECT dateTo FROM reservation WHERE Vehicle_id='. $id . ' AND reservationStatus = 2 LIMIT 1 ');
$first = $sql->fetch_assoc();
$sql->free();
$sql = $db->query('SELECT dateFrom FROM reservation WHERE Vehicle_id='. $id . ' AND reservationStatus = 1 AND (dateFrom > \''.$first['dateTo'] .'\') ORDER BY dateFrom ASC ');

$row = $sql->fetch_assoc();

$month = strtotime($first['dateTo']);
$end = strtotime($row['dateFrom']); 

3 个答案:

答案 0 :(得分:0)

尝试

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2
ORDER BY dateFome DESC
LIMIT 1

将按dateFrom排序结果(最新的第一行),只需获取第一行。

答案 1 :(得分:0)

使用datefrome的order by,并限制1。 这将给出您需要的结果

SELECT dateFrom, dateTo reservation WHERE reservationStatus = 2
ORDER BY dateFome DESC
LIMIT 1

答案 2 :(得分:0)

你走了:

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2 
ORDER BY dateFrom DESC 
LIMIT 1