2013-05-11 3 views
0

Я стараюсь работать, но не очень далеко. Если бы кто-нибудь мог помочь, это было бы здорово.Предыдущие элементы в коллекции

В принципе, мне нужно иметь предыдущие и следующие элементы из всех элементов таблицы. Если это последний элемент, мне нужно выполнить цикл до первого элемента. Если это первый элемент, предыдущий элемент должен быть последним. Кроме того, предметы должны увеличиваться и уменьшаться на единицу. Мне нужно каким-то образом добавить это в один запрос, чтобы они были в одном порядке или были идентифицированы в моем приложении, я могу видеть, что является предыдущим, и который является следующей кнопкой. Это MySQL до сих пор, но не правильный. Я использую 22083, так как это последний элемент таблицы.

SELECT id, alias_title from image 
where ( 
     id = IFNULL((select min(id) from image where id > 22083), (select min(id) from image)) 
     or id = IFNULL((select max(id) from image where id < 22083),(select min(id) from image)) 
    ) 
+0

могли бы вы вернуть весь результирующий набор, а затем петлю через результаты на уровне приложений ? – Strawberry

ответ

0

Рассмотрите этот пример. Для простоты, он опирается на тот факт, что i индексируется, но более надежный метод может ввести некоторый порядок ... надлежащего

SELECT * FROM ints; 
+---+ 
| i | 
+---+ 
| 0 | 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
| 5 | 
| 6 | 
| 7 | 
| 8 | 
| 9 | 
+---+ 

SELECT * FROM ints WHERE i >=5 UNION SELECT * FROM ints; 
+---+ 
| i | 
+---+ 
| 5 | 
| 6 | 
| 7 | 
| 8 | 
| 9 | 
| 0 | 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
+---+ 
Смежные вопросы