sql >> Database >  >> RDS >> Mysql

Ouder-kindrelatie binnen één tabel

Aangezien je maar 4 niveaus hebt, zou je geen recursie nodig moeten hebben (hoewel het handig zou zijn om bv. MS SQL CTE's te kunnen gebruiken).

Iets als:

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.

Als u dit voor meerdere knooppunten moet doen, moet u dit koppelen aan iets dat uw startknooppunten selecteert, of bijvoorbeeld het bovenstaande vervangen WHERE t4.uid = '10007' clausule moet zijn WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Dit is uit de vrije hand gedaan, dus excuses voor typefouten.




  1. MySQL oplopende waarde

  2. Hoofdlettergevoelig in Mysql met selecteer waar Query

  3. Hoe dezelfde query op meerdere tabellen in de database uit te voeren?

  4. Hoe de primaire sleutelnaam te specificeren in EF-Code-First