Ciao,
ho una tabella del DB che contiene le informazioni sulle pagine.
Per ogni pagina oltre ai dati unici c'è il campo parent_id che indica la pagina padre a cui essa appartiene.
Se è una pagina principale, il valore di parent_id sarà 0:
codice:
+-----------+-------------+---------+
| page_id | parent_id | level |
+-----------+-------------+---------+
| 1 | 0 | 0 |
+-----------+-------------+---------+
| 2 | 0 | 0 |
+-----------+-------------+---------+
| 3 | 1 | 1 |
+-----------+-------------+---------+
| 4 | 2 | 1 |
+-----------+-------------+---------+
| 5 | 3 | 2 |
+-----------+-------------+---------+
Il campo level indica il livello della pagina all'interno dell'albero, e il suo valore viene calcolato dall'applicazione (PHP) al momento dell'inserimento/modifica del record.
Escludendo questo campo, la tabella è ottimizzata, mentre lasciando il campo la tabella non rispetta la [color=royal blue]terza forma normale[/color], che prevede l'eliminazione delle dipendenze.
È possibile con MySQL risalire al livello di una pagina senza leggerlo dal campo?
A me sembra un'operazione ricorsiva non implementabile in una where clause.