sql >> Databáze >  >> RDS >> PostgreSQL

Jak převést hierarchické dotazy oracle na postgresql?

V PostgreSQL se rekurzivní dotazy konstruují tak, že nejprve zadáte počáteční sada řádků (nerekurzivní výraz , tj. ty na kořenové nebo konečné úrovni hierarchie). Následné iterace (přes rekurzivní výraz , dílčí dotaz za UNION ALL ) pak přidejte řádky do sady výsledků ze zbývajících řádků v sadě vstupních řádků dokud nebudou přidány žádné další řádky.

Ve vašem případě je počáteční dílčí dotaz nefiltrovaný, takže jednoduše přidáte všechny řádky při počátečním spuštění a pro další spuštění nezůstane nic.

Zkuste následující:

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. Jak najít interval mezi dvěma daty v PostgreSQL

  2. CHYBA PostgreSQL:42P01:vztah [Tabulka] neexistuje

  3. Jak vložit prvky pole do SQL propojeného s c++?

  4. Jak převést DateTime na VarChar