Skip to content

Instantly share code, notes, and snippets.

@Arkham
Created January 22, 2014 10:28
Show Gist options
  • Save Arkham/8556546 to your computer and use it in GitHub Desktop.
Save Arkham/8556546 to your computer and use it in GitHub Desktop.
postgres recursive queries
WITH RECURSIVE friendship_tree(id, name, path) AS (
SELECT id, name, ARRAY[id]
FROM members
WHERE members.h1 LIKE '%Cortina%'
UNION ALL
SELECT members.id, members.name, path || members.id
FROM friendship_tree
JOIN friendships ON friendships.friend_id = friendship_tree.id
JOIN members ON members.id = friendships.member_id
WHERE NOT members.id = ANY(path)
)
SELECT * FROM friendship_tree ORDER BY path;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment