Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres рекурсивный запрос ? / 5 сообщений из 5, страница 1 из 1
24.03.2015, 09:50
    #38914429
DoomUnit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres рекурсивный запрос ?
В общем имею рекурсивный запрос
Код: 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
24.03.2015, 09:57
    #38914443
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres рекурсивный запрос ?
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
24.03.2015, 10:56
    #38914545
DoomUnit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres рекурсивный запрос ?
нет я именно хочу чтобы мне вернулось имя со значением вложенности то есть
root
_1
__2
root2
_1
...
Рейтинг: 0 / 0
24.03.2015, 12:57
    #38914854
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres рекурсивный запрос ?
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
25.03.2015, 08:45
    #38915902
DoomUnit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Postgres рекурсивный запрос ?
то что нужно. спасибо. правда я сделал так
Код: sql
1.
CAST (  lpad('', (LEVEL + 1)*3, ' ') || T2.p_title AS VARCHAR(255))
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Postgres рекурсивный запрос ? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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