sql >> Database >  >> RDS >> PostgreSQL

Hoe orakel hiërarchische query's naar postgresql te converteren?

In PostgreSQL worden recursieve zoekopdrachten geconstrueerd door eerst de initiële . op te geven reeks rijen (de niet-recursieve term , d.w.z. die op het hoofd- of eindniveau van de hiërarchie). Daaropvolgende iteraties (over de recursieve term , de subquery na de UNION ALL ) voeg vervolgens rijen toe aan de resultatenset van de resterende rijen in de invoerrijenset totdat er geen rijen meer worden toegevoegd.

In uw geval is de initiële subquery niet gefilterd, dus u voegt eenvoudig alle rijen toe tijdens de eerste uitvoering, zodat er niets overblijft voor volgende uitvoeringen.

Probeer het volgende:

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. Breekt MySQL de norm door kolommen te selecteren die geen deel uitmaken van de group by-clausule?

  2. strip_tags werken niet

  3. MySQL - Update meerdere waarden en WHERE IN

  4. MySQL ERROR 1005:Kan geen tabel maken (fout:150)