Ecto와 함께 실행할 쿼리에서 재귀 CTE의 결과를 어떻게 사용합니까?Ecto에서 재귀 CTE 사용
-- nodes table example --
id parent_id
1 NULL
2 1
3 1
4 1
5 2
6 2
7 3
8 5
그래서 나는 또한 다른 테이블 nodes_users 구조화 있습니다 : 내가 가진 모든 사용자를 잡아하려면 지금
-- nodes_users table example --
node_id user_id
1 1
2 2
3 3
5 4
예를 들어 이제 내가 그렇게 같이 구성 테이블 노드를 가지고 가정 해 봅시다 이나 특정 노드 위의 노드는, 예를 위해의 노드를 선택할 수 있도록 w 아이디/8
내가 그렇게 할 수있는 다음과 같은 재귀 postgresql 쿼리를 사용할 수:
WITH RECURSIVE nodes_tree AS (
SELECT *
FROM nodes
WHERE nodes.id = 8
UNION ALL
SELECT n.*
FROM nodes n
INNER JOIN nodes_tree nt ON nt.parent_id = n.id
)
SELECT u.* FROM users u
INNER JOIN users_nodes un ON un.user_id = u.id
INNER JOIN nodes_tree nt ON nt.id = un.node_id
이 사용자 w/ID의 1, 2 *. 사용자를 반환해야하고, 4
는 내가 이상적으로 반환하는 방식으로, 체외을 사용하여이 같은 쿼리를 실행할 수있는 방법을 잘 모르겠어요 연결 가능한 출력. 조각 매크로를 사용하여 원시 SQL을 쿼리에 삽입 할 수 있다는 것을 이해합니다.하지만이 경로가 어디에서 사용되는지 또는 그 경로가 가장 적절한 경로인지는 확실하지 않습니다.
도움 및/또는 의견을 보내 주시면 감사하겠습니다.