powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres рекурсивный запрос ?
5 сообщений из 5, страница 1 из 1
Postgres рекурсивный запрос ?
    #38914429
DoomUnit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем имею рекурсивный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
   WITH RECURSIVE temp1 ( p_id,p_parent,p_title,PATH, LEVEL, NAME  ) AS (
    SELECT T1.p_id,T1.p_parent, T1.p_title, CAST (T1.p_id AS VARCHAR (50)) as PATH, 1 , CAST (T1.p_title AS VARCHAR (255)) as NAME
        FROM "SC_Wonder".t_page T1 WHERE T1.p_parent IS NULL
    union
    select T2.p_id, T2.p_parent, T2.p_title, CAST ( temp1.PATH ||'->'|| T2.p_id AS VARCHAR(50)) ,LEVEL + 1 ,
    CAST (  '   '|| temp1.NAME AS VARCHAR(255))
         FROM "SC_Wonder".t_page T2 INNER JOIN temp1 ON( temp1.p_id= T2.p_parent))
    select * from temp1 ORDER BY PATH LIMIT 100


он выдает
в поле NAME
_10
___10
и прочее. причем 1 - это имя первой записи.
как победить и заставить выводить имя текущей записи
...
Рейтинг: 0 / 0
Postgres рекурсивный запрос ?
    #38914443
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoomUnitВ общем имею рекурсивный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
   WITH RECURSIVE temp1 ( p_id,p_parent,p_title,PATH, LEVEL, NAME  ) AS (
    SELECT T1.p_id,T1.p_parent, T1.p_title, CAST (T1.p_id AS VARCHAR (50)) as PATH, 1 , CAST (T1.p_title AS VARCHAR (255)) as NAME
        FROM "SC_Wonder".t_page T1 WHERE T1.p_parent IS NULL
    union
    select T2.p_id, T2.p_parent, T2.p_title, CAST ( temp1.PATH ||'->'|| T2.p_id AS VARCHAR(50)) ,LEVEL + 1 ,
    CAST (  '   '|| temp1.NAME AS VARCHAR(255))
         FROM "SC_Wonder".t_page T2 INNER JOIN temp1 ON( temp1.p_id= T2.p_parent))
    select * from temp1 ORDER BY PATH LIMIT 100


он выдает
в поле NAME
_10
___10
и прочее. причем 1 - это имя первой записи.
как победить и заставить выводить имя текущей записи

замените CAST ( ' '|| temp1.NAME AS VARCHAR(255))
на CAST (T2.p_title AS VARCHAR(255))

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Postgres рекурсивный запрос ?
    #38914545
DoomUnit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет я именно хочу чтобы мне вернулось имя со значением вложенности то есть
root
_1
__2
root2
_1
...
Рейтинг: 0 / 0
Postgres рекурсивный запрос ?
    #38914854
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoomUnitнет я именно хочу чтобы мне вернулось имя со значением вложенности то есть
root
_1
__2
root2
_1

Код: plsql
1.
CAST ((repeat(' ', LEVEL+1)||T2.p_title) AS VARCHAR(255))


помоему совершенно очевидно

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Postgres рекурсивный запрос ?
    #38915902
DoomUnit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что нужно. спасибо. правда я сделал так
Код: sql
1.
CAST (  lpad('', (LEVEL + 1)*3, ' ') || T2.p_title AS VARCHAR(255))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres рекурсивный запрос ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]