我有一个表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']);
答案 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