sql >> データベース >  >> RDS >> PostgreSQL

Ectoで再帰CTEを使用する

    私はフラグメントを使用してこれを達成することができました。これが私が使用したコードの例です。このメソッドをストアドプロシージャに移動する可能性があります。

    Repo.all(MyProj.User,
      from u in MyProj.User,
      join: un in MyProj.UserNode, on: u.id == un.user_id,
      join: nt in fragment("""
      (
        WITH RECURSIVE node_tree AS (
          SELECT *
          FROM nodes
          WHERE nodes.id = ?
        UNION ALL
          SELECT n.*
          FROM nodes n
          INNER JOIN node_tree nt ON nt.parent_id == n.id
        )
      ) SELECT * FROM node_tree
      """, ^node_id), on: un.node_id == nt.id
    )
    



    1. MySQLの複雑なCOUNTクエリ

    2. 同じテーブルへの複数の結合

    3. AWSGlue-挿入する前に宛先postgresテーブルを切り捨てます

    4. トップ5の無料データベース設計ツール