2017-08-30 6 views
1

J'ai une table avec une référence circulaire pour la relation parent-enfant. Cela ressemblera à celui donné dans ce violon.Récupère tous les parents d'une table de référence circulaire dans MySQL

http://sqlfiddle.com/#!9/2d852c/1/0

Je dois trouver tous les noms des parents pour un ID donné. Quelle requête je peux utiliser ici. J'ai essayé de joindre la table à elle-même, mais elle ne va chercher qu'un seul niveau dans l'arbre. C'est-à-dire qu'il ira chercher le parent immédiat seulement. J'ai besoin d'obtenir tous les parents. Comme si je recherche avec «troisième», je dois obtenir «deuxième» et «premier»

+0

Je ne suis pas sûr qu'il existe un bon moyen de le faire en utilisant purement SQL. Peut-être utiliser quelque chose comme networkx pour trouver des cycles? – barrycarter

Répondre

1

Essayez cette requête. Cependant, je ne sais pas si cela fonctionnera pour tous les cas de test possibles.

SELECT * 
FROM table1 
WHERE parent > 0 AND parent <= (SELECT parent FROM table1 WHERE name LIKE fifth') 
ORDER BY id DESC