次のようなデータベースがあります。
+------------+-------------+
| listed | data |
+------------+-------------+
| 2013-01-01 | random text |
| 2013-01-02 | random text |
| 2013-01-03 | random text |
| 2013-01-05 | random text |
| 2013-01-06 | random text |
| 2013-01-07 | random text |
+------------+-------------+
この場合、'data' はジョークのタイトルです。現在のジョークの隣に、古いジョークと新しいジョークをリストしたいと思います。毎日冗談があるわけではありません。そして、新しいものがない場合は、古いものだけが必要で、その逆も...
それで:
for 2013-01-02 I want 2013-01-01 and 2013-01-03
for 2013-01-03 I want 2013-01-02 and 2013-01-05
for 2013-01-07 I want 2013-01-05 and 2013-01-06
for 2013-01-01 I want 2013-01-02 and 2013-01-03
他のクエリが何も返さない場合に備えて、少なくとも 2 つのジョークを取得して、2 つのクエリでこれを行うことができます。
SELECT * FROM jokes WHERE listed>'$date' ORDER BY listed ASC limit 2
SELECT * FROM jokes WHERE listed<'$date' ORDER BY listed DESC limit 2
次に、配列の長さを計算しますが、単一のクエリでこれを行う適切な方法があるかどうか疑問に思っていましたか?