PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на рекурсивен CTE с Ecto

Успях да постигна това с помощта на фрагмент. Ето пример за кода, който използвах. Вероятно ще преместя този метод в съхранена процедура.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Потребител на Postgres създава база данни

  2. Оптимален размер за дяловете на базата данни

  3. Изчисляване на процента игра отново на следващия ден

  4. Пълнотекстово търсене на подниз в PostgreSQL

  5. Свържете се с отдалечена база данни PostgreSql с помощта на Powershell