sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af rekursiv CTE med Ecto

Jeg var i stand til at opnå dette ved hjælp af et fragment. Her er et eksempel på den kode jeg brugte. Jeg vil sandsynligvis flytte denne metode til en lagret procedure.

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. InnoDB række niveau låse ydeevne - hvor mange rækker?

  2. PDO-forespørgsel på sammenføjede tabeller, når kolonnenavne er de samme

  3. Udfør erklæring eller køre script?

  4. utf8-data ser fint ud i mysql, men er brudt i skinner