sql >> Database >  >> RDS >> PostgreSQL

Recursieve SELECT-query om tarieven van willekeurige diepte te retourneren?

Dit is misschien wat u zoekt, volgens uw beschrijving:

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;

Recursie stopt automatisch zodra het bovenste knooppunt (parent_rate_plan_id IS NULL ) is bereikt.

Het is effectiever om mee te doen om te rate een keer nadat je alle plannen hebt verzameld.

De handleiding over (recursieve) CTE's.




  1. Aantal rijen met PDO

  2. Verschil tussen taal sql en taal plpgsql in PostgreSQL-functies

  3. Hoe kan ik deze query wijzigen met twee Inner Joins zodat deze geen dubbele resultaten geeft?

  4. Ongeldig parameternummer, PDO bij dubbele update mislukt