In de eerste query verbindt u alleen door het niveau. Dus als niveau <=1, krijgt u elk van de records 1 keer. Als niveau <=2, dan krijg je elk niveau 1 keer (voor niveau 1) + N keer (waarbij N het aantal records in de tabel is). Het is alsof je aan het cross-joinen bent, omdat je gewoon alle records van de tafel plukt totdat het niveau is bereikt, zonder andere voorwaarden om het resultaat te beperken. Voor niveau <=3 wordt dit opnieuw gedaan voor elk van die resultaten.
Dus voor 3 records:
- Lvl 1:3 record (allemaal met niveau 1)
- Lvl 2:3 records met niveau 1 + 3*3 records met niveau 2 =12
- Lvl 3:3 + 3*3 + 3*3*3 =39 (inderdaad 13 records elk).
- Lvl 4:begin je een patroon te zien? :)
Het is niet echt een cross-join. Een cross join retourneert alleen die records met niveau 2 in dit zoekresultaat, terwijl u met deze verbinding door zowel de records met niveau 1 als de records met niveau 2 krijgt, wat resulteert in 3 + 3*3 in plaats van alleen 3*3-record.