2016-11-07 3 views
0

У меня есть следующая таблица:рекурсивный запрос в PostgreSQL

table 'users'

и у меня есть следующий запрос:

WITH RECURSIVE users_r AS (
      SELECT user_id, parent_id, 0 as level 
      FROM users 
      WHERE parent_id is null 
     UNION ALL 
      SELECT u.user_id, u.parent_id, u.level + 1 
      FROM users u 
       INNER JOIN users_r 
        ON (u.parent_id = users_r.user_id) 
    ) 

    SELECT * FROM users_r LIMIT 1000 

Я хочу, чтобы заполнить колонку «уровень» с в зависимости от кол-ву предки. Но мой код не работает. Он заполняет строки только там, где parent_id имеет значение NULL.

Result of my code

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

ответ

1

Это просто опечатка.

рекурсивной SELECT, сразу после того, как UNION ALL не следует читать

SELECT u.user_id, u.parent_id, u.level + 1 

но

SELECT u.user_id, u.parent_id, users_r.level + 1 

Вы бы заметили сразу же, если вы не имели level колонку в users.

+0

Big спасибо, теперь его работа –

Смежные вопросы