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

mysql pour obtenir la profondeur de l'enregistrement, compter les enregistrements parents et ancêtres

Si vous effectuez de nombreuses requêtes de ce type, vous constaterez peut-être qu'un modèle d'ensemble imbriqué est plus approprié que la liste de contiguïté que vous posez. Il y a une bonne discussion sur les deux modèles ici .

Dans tous les cas, pour faire ce que vous demandez avec une liste de contiguïté, vous envisagez soit la récursivité dans la couche d'application, soit le stockage du niveau dans une troisième colonne.

ETA :si votre nombre de niveaux n'est pas très élevé, vous pouvez le faire avec des jointures automatiques :

par exemple. nœuds avec 2 ancêtres :

SELECT t1.node 
FROM mytable AS t1
JOIN mytable AS t2 ON t1.parent = t2.node
JOIN mytable AS t3 ON t2.parent = t3.node
WHERE t3.parent IS NULL;