PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan CTE rekursif dengan Ecto

Saya dapat mencapai ini menggunakan sebuah fragmen. Berikut contoh kode yang saya gunakan. Saya mungkin akan memindahkan metode ini ke prosedur tersimpan.

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. Bagaimana Fungsi Sign() Bekerja di PostgreSQL

  2. Cara Mengelola Database PostgreSQL Anda Dari ClusterControl CLI

  3. Bagaimana cara menggunakan 2 adapter database yang berbeda (SQL Server dan PostgreSQL) di Rails di lingkungan yang sama?

  4. Postgresql:menghapus spasi di antara jenis digit tertentu

  5. Bagaimana cara meminta nilai nol dalam jenis bidang json postgresql?