Lo he pensado y no se me ocurre una única consulta en la que puedas conseguirlo todo
, pero creo que la recursividad no es la mejor idea en este caso. Me parece que haciendo la consulta dentro de un bucle y utilizando el nivel como condición de ruptura funcionaría mejor que con recursividad.
Lamento no poder ayudarte.