0

テーブル コールの予約があり、すべての車両のすべての予約が含まれています。そして、1 = スケジュール済み、2 = 保留中、0 = キャンセル済みを意味するreservationStatusフィールドがあります。

したがって、現在の保留中のレコードに基づいて、テーブルから次の予約日を選択したいと考えています。

だから私はこのコードを実行すると

SELECT dateFrom, dateTo FROM reservation WHERE reservationStatus = 2

現在保留中の予約が表示されます。ここから、dateFromフィールドが前のレコード以下の最初のレコードを返したいdateToですか?

これは1つの選択ステートメントで行うことができますか? いくつかのphpで2つの別々のステートメントを使用して実行できることはわかっていますが、1つのクエリで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

試す

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

結果をdateFrom(最新のものから) 並べ替え、最初の行だけをフェッチします。

于 2013-03-11T04:52:13.497 に答える
0

order by を datefrome と limit 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 に答える