lupti_du lupti_du - 1 year ago 87
SQL Question

recursive query in postgresql

I have the following table:

table 'users'

and I have the following query:

SELECT user_id, parent_id, 0 as level
FROM users
WHERE parent_id is null
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

I want to fill "level" column with depending on the count of ancestors. But my code isn't working. It fills rows only where parent_id is null.

Result of my code

Answer Source

It is a simple typo.

The recursive SELECT, immediately after the UNION ALL should not read

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


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

You would have noticed right away if you didn't have a level column in users.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download