2012-01-03 10 views
0

私は次の列のテーブルデータを持っています:
| -a- | -b- | -text- |
| -1- | -1- | -text- |
| -1- | 2- | -text- |
| -1- | 3- | -text- |
| -2- | -1- | -text- |
| -2- | 2- | -text- |
| -2- | -3- | -text- |
| -2- | -4- | -text- |前/次ボタンSQLクエリ

私は3番目のレコード($現在の - 太字)で、私は(2、1)に移動するSQLクエリを作成する必要があります。

私は以下のようにクエリを持っている:

$previous = "SELECT a, b FROM `table` WHERE a <= $current_a AND b < $current_b ORDER BY a DESC, b DESC LIMIT 1"; 
$next = "SELECT a, b FROM `table` WHERE a >= $current_a AND b > $current_b ORDER BY a ASC, b ASC LIMIT 1"; 

しかし、次の代わりに(4、2)に行くけど。

アイデア?

+0

の$ current_bので、それが動くことをその奇妙ではありません3であります(2,1)の代わりに(2,4)を使用します。 (2,4)はあなたのSQLに従って(1,3)の後に来る唯一のものなので、あなたは他の方法を考える必要があります。 – esrange

答えて

0

2つのケースを別々に処理する条件が必要です。 値がされた場合に同一である、とするとき、彼らは異なっている:

where (a = @current_a and b > @current_b) or (a > @current_a) 

はあなたが必要とするも、前の項目について:

where (a = @current_a and b < @current_b) ro (a < @current_a) 
+0

のような魅力!まことにありがとうございます!!! – Crimix

関連する問題