Mysql
 sql >> Database >  >> RDS >> Mysql

Parent - Parent parent all'interno di una singola tabella

Dal momento che hai 4 livelli finiti, non dovresti aver bisogno della ricorsione (sebbene sarebbe utile essere in grado di utilizzare ad esempio CTE MS SQL).

Qualcosa come:

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.

Se devi farlo per più nodi, dovresti unirlo a qualcosa che seleziona i tuoi nodi iniziali, o ad esempio sostituire il WHERE t4.uid = '10007' sopra riportato clausola da WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Questo è stato fatto a mano libera, quindi ci scusiamo per gli errori di battitura.