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

Forælder - Børneforhold inden for en enkelt tabel

Da du har endelige 4 niveauer, skulle du ikke have brug for rekursion (selvom det ville være praktisk at kunne bruge f.eks. MS SQL CTE'er).

Noget som:

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.

Hvis du har brug for at gøre dette for flere noder, skal du forbinde dette med noget, der vælger dine startnoder, eller f.eks. erstatte ovenstående WHERE t4.uid = '10007' klausul skal være WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Dette blev gjort på frihånd, så undskyld for stavefejl.




  1. Hvordan bruger man SQL - INSERT...ON DUPLICATE KEY UPDATE?

  2. JPA EclipseLink DatabaseException:'tabel foo.SEQUENCE eksisterer ikke'

  3. MySql tilføjer en join giver forkerte resultater

  4. SQL MELLEM-Smarte tips til at scanne efter en række værdier