Questo
il sito web ha una panoramica davvero interessante dei diversi metodi per la memorizzazione dei dati gerarchici in MySQL e PHP. Per rispondere alla tua domanda, il modo più semplice è usare php e la ricorsione. Ci sono altri metodi che potresti usare come il modified preorder transversal
, che non richiedono più query di database. Ma questo metodo può essere più complesso da implementare quando si ha a che fare con molti inserimenti e aggiornamenti.
Un altro metodo davvero interessante e il mio preferito è la cosiddetta "tabella di chiusura" / "relazione di adiacenza" menzionata in Qual è il modo più efficiente/elegante per analizzare un tavolo piatto in un albero?
Per quanto riguarda il tuo commento devi sostanzialmente creare un ciclo o una funzione ricorsiva che seleziona il genitore di chicago, quindi il genitore del genitore e così via.
$stack = array();
$parent = 3;
while($parent != 0){
$data = (put your mysql to get the row with parentID = $parent)
$parent = data['parentID'];
$stack[] = $data;
}
$stack = array_reverse($stack);
Stack conterrà quindi i genitori di Chicago, (es. posizione, USA)