0

我有一张叫预订的桌子,它包含每辆车的所有预订。我有一个 reservationStatus 字段,表示 1 = 已安排 2 = 待处理,0 = 已取消。

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

所以当我运行这段代码时

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2

这将给我当前未决的保留。现在从这里我想返回dateFrom字段小于或等于前一个的第一条记录dateTo

这可以在一个选择语句中完成吗?我知道它可以使用 2 个单独的语句和一些 php 来完成,但我想知道它是否可以在一个查询中用 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']); 
4

3 回答 3

0

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

SELECT dateFrom, dateTo reservation WHERE reservationStatus = 2
ORDER BY dateFome DESC
LIMIT 1
于 2013-03-11T04:55:15.353 回答
0

干得好:

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2 
ORDER BY dateFrom DESC 
LIMIT 1
于 2013-03-11T04:55:40.483 回答
0

尝试

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

将按(最新的优先)排序结果dateFrom并仅获取第一行。

于 2013-03-11T04:52:13.497 回答