Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql, um die Tiefe der Aufzeichnungen zu erhalten, zählen Sie Eltern- und Vorfahrenaufzeichnungen

Wenn Sie viele solcher Abfragen durchführen, stellen Sie möglicherweise fest, dass ein verschachteltes Mengenmodell besser geeignet ist als die Adjazenzliste, nach der Sie fragen. Eine gute Diskussion beider Modelle finden Sie hier .

In jedem Fall, um das zu tun, was Sie mit einer Adjazenzliste verlangen, sehen Sie sich entweder die Rekursion in der Anwendungsschicht an oder speichern die Ebene als dritte Spalte.

ETA:Wenn Ihre Levelzahl nicht sehr hoch ist, können Sie es mit Selbstbeitritten tun:

z.B. Knoten mit 2 Vorfahren:

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;