Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je obtenir de manière récursive l'ID parent des lignes de cette table MySQL ?

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)