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

Eltern-Kind-Beziehung innerhalb einer einzelnen Tabelle

Da Sie endlich 4 Ebenen haben, sollten Sie keine Rekursion benötigen (obwohl es praktisch wäre, zB MS SQL CTEs verwenden zu können).

Etwas wie:

SELECT
  t4.uid as child, 
  --t3.uid as parent,
  --t2.uid as grand_parent,
  --t1.uid as great_grand_parent,
  t1.parentid as great_great_grand_parent
FROM
  your_table_name t1

  inner join your_table_name t2
  on t2.parentid = t1.uid

  inner join your_table_name t3
  on t3.parentid = t2.uid

  inner join your_table_name t4
  on t4.parentid = t3.uin

where 
  t4.uid = '10007' -- your start node.

Wenn Sie dies für mehrere Knoten tun müssen, müssen Sie dies mit etwas verbinden, das Ihre Startknoten auswählt, oder zB das obige WHERE t4.uid = '10007' ersetzen Klausel zu WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Dies wurde freihändig gemacht, also entschuldigen Sie Tippfehler.