1

と の 2 つのテーブルを持つデータベースがありtripsますdays。の各エントリにdaysは、 のエントリに対応する ID がありtripsます。

指定された日付に発生する旅行を返すクエリを実行したいのですが、その日付に発生する旅行がない場合は、その日付以降の次の旅行を返します。これが私の現在のクエリです(daystringコードで生成され、有効なSQL日付文字列であると仮定します):

SELECT _id, number, date 
FROM trips 
INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE( daystring, "start of day", "-1 day" ) 
  AND days.date < DATE( daystring, "start of day", "+1 day" );

ただし、そのクエリは、指定された日付に旅行が存在する場合にのみ結果を返します。その日付に旅行がない場合にのみ、その日付以降の次の旅行を返すように変更するにはどうすればよいですか?

4

1 に答える 1

3
SELECT _id, number, date FROM trips INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE( daystring, "start of day", "-1 day" ) 
order by date Limit 1;

クイックフィックスです。ただし、日付列がない場合は、日付列にインデックスが必要になる場合があります。

于 2012-11-01T23:44:58.863 に答える