Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2018, 02:31   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Помогите написать хитровыдуманный запрос

СУБД postgresql.
Помогите написать хитровыдуманный
запрос, есть иерархическая таблица - боги Древней Греции.
У каждой записи, есть поле parent_id - идентификатор родителя записи, level - уровень записи.
Уровень 1. Корень - Хаос (дети: Зевс, Посейдон)
Уровень 2. Зевс (дети: Афина, Гермес)
Посейдон(дети: Тритон)
Уровень 3. Афина (дети: Эрхитоний)
Гермес (дети: нет)
Тритон (дети: нет)
Уровень 4. Эрхитоний (дети: нет)

Код:
CREATE TABLE gods(id integer PRIMARY KEY, name text,  parent_id integer, level integer);
INSERT INTO Gods VALUES(1,'Хаос', NULL, 1);
INSERT INTO Gods VALUES(2,'Зевс', 1, 2);
INSERT INTO Gods VALUES(3,'Посейдон', 1, 2);
INSERT INTO Gods VALUES(4,'Афина', 2, 3);
INSERT INTO Gods VALUES(6,'Гермес', 2, 3);
INSERT INTO Gods VALUES(7,'Тритон',3,3);
INSERT INTO Gods VALUES(8,'Эрхитоний',4,4);

Как итог имеем n-арное дерево, нужно написать хитровыдуманный запрос,
который сделает прямой обход этого дерева.
В итоге нужно получить список
1) Хаос
2) Зевс
3) Афина
4) Эрхитоний
5)Гермес
6) Посейдон
7) Тритон
polin11 вне форума Ответить с цитированием
Старый 22.11.2018, 06:04   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Копать надо в сторону рекурсивных запросов: https://habr.com/post/269497/
Там есть очень похожий пример, только порядок выдачи неправильный.
Видимо, надо прикручивать хитрую сортировку
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать запрос qvernaut SQL, базы данных 6 26.11.2015 20:26
помогите написать SQL запрос Vitaliya_1619 Помощь студентам 1 23.09.2015 08:16
написать запрос, помогите Sadran SQL, базы данных 2 08.09.2015 12:49
Помогите написать запрос l_m_l SQL, базы данных 2 10.10.2008 20:09
Помогите написать SQL запрос Vedrus SQL, базы данных 1 22.07.2008 13:21