Dit bouwt een hiërarchische query op. De connect by
definieert hoe u van het bovenliggende knooppunt naar het onderliggende knooppunt en het onderliggende knooppunt van hun kinderen loopt. In dit geval is uw definitie van verbinding alleen wanneer level >= 4
. De truc hier is dat level
is een pseudo-kolom, zoals rownum
, dus aan de voorwaarde wordt alleen voldaan door het minder-dan-gelijke aantal dat wordt geleverd (in dit geval 4). Je kunt dit ook doen met rownum:
select level from dual connect by rownum <= 4;
Level
wordt gebruikt om de diepte van de verbindingen te tellen, dus een ouder is 1, een kind 2, een kind van het kind 3, enz. Zie het dus als een rijnummer voor hiërarchische zoekopdrachten.