私は次のクエリを持っていますが、これは一般的に機能し、定義された時間枠をカバーするすべての行を返すことになっています(絶対一致がない場合は最も近い前の行と次の行を取得します-http://www.orafaq.com/node/1834で概説されています)
SELECT * FROM table
WHERE id=__ID__ AND `date` BETWEEN
IFNULL((SELECT MAX(`date`) FROM table WHERE id=__ID__ AND `date`<=__LOWERLIMIT__), 0)
AND
IFNULL((SELECT MIN(`date`) FROM table WHERE id=__ID__ AND `date`>=__UPPERLIMIT__), UNIX_TIMESTAMP())
ORDER BY `date`
しかし、外側の選択を参照することによって2つのテーブルの副選択を減らすことを望んでいましたが、明らかにそれは好きではありません
SELECT * FROM (SELECT * FROM table WHERE id=__ID__) b
WHERE `date` BETWEEN
IFNULL((SELECT MAX(`date`) FROM b WHERE `date`<=__LOWERLIMIT__), 0)
AND
IFNULL((SELECT MIN(`date`) FROM b WHERE `date`>=__UPPERLIMIT__), UNIX_TIMESTAMP())
ORDER BY `date`
3つのテーブルを選択せずにクエリを実行する方法はありますか?