Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Главные и дочерние елементы


Автор: Zorak 11.2.2015, 11:27
Всем доброго времени суток. Проблема следующего характера: есть таблица (одна) table1. В ней есть поля: ID(primary key AUTOINCREMENT), PAGE, PARENT. 

например есть такие записи:
ID  | PAGE | PARENT
1     page        0
2     page        1
3     page        2
4     page        1
5     page        2

И так, нужно сделать выборку запросом типа: 
Код

SELECT * FROM table1 WHERE PAGE = 'page' limit 3

но с тем отличием что нужно взять первую запись, где PAGE = 'page', посмотреть его ID и после этого выбрать записи с PARENT = ID, и только потом если не исчерпан limit продолжать выборку по условию PAGE = 'page'.
Т.е. как результат в данном случае должны быть записи с ID = 1, 2, 4.

З.ы. Своих телодвижений не показываю ибо все они настолько глупые и не правильные, что не стоят даже внимания. Спасибо.

Автор: Akina 11.2.2015, 11:30
Цитата(Zorak @  11.2.2015,  12:27 Найти цитируемый пост)
что нужно взять первую запись, где PAGE = 'page', посмотреть его ID и после этого выбрать записи с PARENT = ID, и только потом если не исчерпан limit продолжать выборку по условию PAGE = 'page'.

Вообще-то пейджинг предполагает правильную сортировку. А в твоём запросе ей и не пахнет. так что именно в том, как отсортировать в нужном порядке, и думай. Пока без деления на страницы.

Добавлено через 1 минуту и 33 секунды
Цитата(Zorak @  11.2.2015,  12:27 Найти цитируемый пост)
нужно взять первую запись

Опять же - если нет сортировки, то нет и "первой" (как, впрочем, и второй, и последней, и любой другой) записи.

Автор: Zorak 11.2.2015, 11:50
Akina, дак сортировка предполагает сортировку после выборки (т.е. готовые результаты) или оно сначала сортирует по ORDER BY скажем и только тогда начинает выборку ?

Автор: Akina 11.2.2015, 12:49
Сортировка выполняется после отбора, но до отдачи результата отбора клиенту. И соответственно до обрезки LIMIT.

Автор: Zorak 11.2.2015, 13:58
Можно сказать разобрался.. Спасибо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)