Ceci
site Web a un très bon aperçu des différentes méthodes de stockage de données hiérarchiques dans mysql et PHP. Pour répondre à votre question, le plus simple est d'utiliser php et la récursivité. Il existe d'autres méthodes que vous pouvez utiliser, telles que le modified preorder transversal
, qui ne nécessitent pas plusieurs requêtes de base de données. Mais cette méthode peut être plus complexe à mettre en œuvre lorsqu'il s'agit de beaucoup d'insertions et de mises à jour.
Une autre méthode vraiment cool et ma préférée est la soi-disant "table de fermeture" / "relation d'adjacence" mentionnée dans Quelle est la manière la plus efficace/élégante d'analyser une table plate dans un arbre ?
Concernant votre commentaire, vous devez essentiellement créer une boucle ou une fonction récursive qui sélectionne le parent de chicago, puis le parent du parent et ainsi de suite.
$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);
La pile contiendra alors les parents de Chicago, (c'est-à-dire l'emplacement, les États-Unis)