sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan konverterer man oracle hierarkiske forespørgsler til postgresql?

I PostgreSQL konstrueres rekursive forespørgsler ved først at angive initial sæt rækker (det ikke-rekursive udtryk , dvs. dem på rod- eller sidste niveau af hierarkiet). Efterfølgende iterationer (over den rekursive term , underforespørgslen efter UNION ALL ) tilføj derefter rækker til resultatsættet fra de resterende rækker i inputrækkesættet indtil der ikke tilføjes flere rækker.

I dit tilfælde er den indledende underforespørgsel ufiltreret, så du tilføjer simpelthen alle rækker på den indledende kørsel, uden at efterlade noget til efterfølgende kørsler.

Prøv følgende:

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. MYSQL Datetime, fjern sekunder

  2. pg.rb segmenteringsfejl [Mojave-opgradering]

  3. Oracle 11.1-fejl, der konverterer juliansk dagnummer til DATO eller TIMESTAMP

  4. få data fra mysql-databasen til brug i javascript