Absurd, дай я тебя расцАлую !!! :lol:
Спасибо большое!
Увеличивать букву на 1 - не поможет, поскольку на самом деле в поле name (наверное я неправильно обьяснил) вовсе не обязательно находится лишь одна буква. Там целые слова.
Более того, они отнють не должны идти по алфавиту (какой-нибуть буквы может и не быть в таблице).
Но!
(До сих пор не могу понять, как я сам до этого не додумался сразу ..
вроди и перебирал много вариантов .. )
Спасибо тебе за "заджоинить на саму себя"!
Итак я написал следующее:
Код: Выделить всё
SELECT
prev.id AS prevID,
prev.name AS prevName,
this.id AS id,
this.name AS name,
next.id AS nextID,
next.name AS nextName
FROM
List this
LEFT JOIN List prev ON prev.name < this.name
LEFT JOIN List next ON next.name > this.name
WHERE
this.id = XXX
ORDER BY
prev.name DESC,
next.name
LIMIT 0 , 1
Такой простой запрос возвращает результат не только следующую и предидущую инфо одновременно, а ещё и всё содержание текущей!
Единственное что .. остаётся вопрос о первом и последнем полях.
Другого выхода, кроме как проверять на NULL и делать, в случае надобности, дополнительный запрос, не вижу ...
Если кто придумает - буду благодарен, нет, - и так сойдёт.