Вполне возможно, что вопрос, подобный этому, задавался ранее, но я не могу придумать условия для поиска.
Я работаю над приложением для создания фотогалереи и хочу отобразить 9 миниатюр, отображающих контекст отображаемой текущей фотографии (в сетке 3x3 с текущей фотографией в центре, если текущая фотография не находится в первых 4 показываются фотографии, и в этом случае, например, если текущая фотография является второй, я хочу выбрать фотографии с 1 по 9). Например, дан альбом, содержащий список фотографий с идентификаторами:
1, 5, 9, 12, 13, 18, 19, 20, 21, 22, 23, 25, 26
Если текущее фото 19, я также хочу просмотреть:
9, 12, 13, 18, 19, 20, 21, 22, 23
Если текущее фото 5, я также хочу просмотреть:
1, 5, 9, 12, 13, 18, 19, 20, 21
Я думал о чем-то вроде:
SELECT *
FROM photos
WHERE ABS(id - currentphoto) < 5
ORDER BY id ASC
LIMIT 25
но это не работает в случае, когда идентификаторы непоследовательны (как в примере выше), или в случае, когда перед текущей фотографией недостаточно фотографий.
Есть мысли?
Спасибо
Дом
p.s. Пожалуйста, оставьте комментарий, если что-то неясно, и я уточню вопрос. Если кто-то может придумать более полезный заголовок, чтобы помочь другим людям найти этот вопрос в будущем, пожалуйста, оставьте комментарий.