sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur konverterar man oracle hierarkiska frågor till postgresql?

I PostgreSQL konstrueras rekursiva frågor genom att först specificera initial uppsättning rader (den icke-rekursiva termen t.ex. de på rot- eller slutnivån i hierarkin). Efterföljande iterationer (över den rekursiva termen , underfrågan efter UNION ALL ) lägg sedan till rader till resultatuppsättningen från de återstående raderna i inmatningsraduppsättningen tills inga fler rader läggs till.

I ditt fall är den initiala underfrågan ofiltrerad så att du helt enkelt lägger till alla rader i den första körningen, utan att lämna något för efterföljande körningar.

Prova följande:

WITH RECURSIVE q AS (
  SELECT po.catalog_id,po.sub_tree_id
  FROM my_catalog po
  WHERE sub_tree_id = 0  -- this initially selects only "root" rows
UNION ALL
  SELECT po.catalog_id,po.sub_tree_id
  FROM my_catalog po
  JOIN q ON q.catalog_id=po.sub_tree_id
)
SELECT * FROM q;



  1. Ta reda på namnet på PL/SQL-proceduren

  2. INNER JOIN Var Klausul

  3. Returnerar tomma rader i GROUP BY-satsen

  4. psql FEL:kunde inte öppna filen address.csv för läsning:Ingen sådan fil eller katalog