sql >> Database >  >> RDS >> PostgreSQL

Recursieve CTE gebruiken met Ecto

Ik heb dit kunnen bereiken met behulp van een fragment. Hier is een voorbeeld van de code die ik heb gebruikt. Ik zal deze methode waarschijnlijk verplaatsen naar een opgeslagen 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. Een MySQL-kolom bijwerken op basis van een checkbox-invoer

  2. Wat is database-sharding?

  3. Magento - Kan productprijzen niet opnieuw indexeren - Foreign Key Constraint Fails

  4. Retourneer de huidige werkstationnaam die is verbonden met SQL Server (T-SQL)