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

Kueri SELECT rekursif untuk mengembalikan tingkat kedalaman sewenang-wenang?

Ini mungkin yang Anda cari, menurut deskripsi Anda:

WITH RECURSIVE cte AS (
   SELECT id, parent_rate_plan_id
   FROM   rate_plan  
   WHERE  id = ${user rate plan ID} 

   UNION ALL
   SELECT rp.id, rp.parent_rate_plan_id
   FROM   cte
   JOIN   rate_plan rp ON rp.id = cte.parent_rate_plan_id
   )
SELECT *
FROM   cte
JOIN   rate r ON r.rate_plan_id = cte.id
ODER   BY length(prefix) DESC
LIMIT  1;

Rekursi berhenti secara otomatis segera setelah node teratas (parent_rate_plan_id IS NULL ) tercapai.

Lebih efektif untuk bergabung dengan rate sekali setelah Anda mengumpulkan semua rencana.

Panduan tentang CTE (rekursif).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk menyimpan waktu sentuhan terakhir di Cassandra

  2. Django tidak dapat memuat perlengkapan uji, IntegrityError

  3. Bagaimana saya bisa mengirim beberapa permintaan http dari fungsi atau pemicu postgresql

  4. Bagaimana Div() Bekerja di PostgreSQL

  5. Batasi bergabung menjadi satu baris