mak_ufo
@mak_ufo

Как правильно выбрать из данные из середины БД?

Здравствуйте. Есть простая таблица notes для мини-блога: id_author, header, text. И мне нужно найти вторые пять записей пользователя, у которого id_author = 2 (например).

То есть извлечь первые 10 записей из таблицы. Потом первые 5 отбросить и отдать клиенту только вторые 5. Как это лучше сделать?
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
Есть простая таблица notes для мини-блога: id_author, header, text. И мне нужно найти вторые пять записей пользователя

В реляционной БД таблица - она же отношение (relation) - это множество записей, а не список. Т.е. они не упорядочены, и если сейчас вам запрос на выборку выдаёт их в одном порядке, то завтра он будет это делать в другом порядке. В записи нигде не хранится время её добавления, поэтому СУБД может перекладывать их как пожелает.
Чтобы решить это проблему, вам нужно добавить поле для хранения порядка записей. Проще всего добавить время публикации. Также вам, возможно, пригодится поле id или number для хранения номера самой записи, т.к. сейчас непонятно, может ли быть несколько записей от одного автора или нет (в теории - может, но непонятно тогда как вы их различаете. По заголовку?).
Затем вам возможно пригодится индекс (id_author, postdatetime), чтобы выборки с сортировкой по времени были эффективными.
Теперь вы сможете выбрать:
select header, text from notes where id_author = <автор> order by postdatetime limit 5, 5
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы