Salta ai contenuti
Manuale LogoManuale Logo

Query ricorsive

Le query ricorsive servono quando i dati hanno una struttura a livelli. Per esempio:

  • cartelle e sottocartelle
  • categorie e sotto-categorie
  • dipendenti e responsabili

In questi casi non basta guardare solo un livello. Devi poter salire o scendere nella gerarchia.

WITH RECURSIVE numeri AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM numeri
WHERE n < 5
)
SELECT * FROM numeri;

Questo esempio non usa una gerarchia vera, ma mostra il meccanismo: la query parte da un valore iniziale e poi genera il successivo finché la condizione resta valida.

Si chiamano così perché una parte della query usa il risultato generato dalla query stessa. È un’idea potente, ma richiede ordine mentale.

Il meccanismo ha due elementi: un punto di partenza e una regola che produce il passo seguente.

Sono molto utili quando vuoi percorrere un albero o una gerarchia senza farlo manualmente riga per riga.

All’inizio sono più difficili da leggere, quindi conviene seguire separatamente il punto di partenza e la regola ricorsiva.