sql >> Databasteknik >  >> RDS >> Mysql

Hierarkisk data i MySql

Som påpekats ovan är detta inte riktigt rekursivt men om du vet hur många steg djupt du maximalt behöver gå, kan du använda något i stil med dessa linjer (kanske använd PHP för att generera frågan):

Jag skulle först ställa in föräldra-ID till NULL istället för 0, men det är personliga preferenser.

SELECT * FROM table t1
LEFT JOIN table t2 ON t2.parent_id = t1.role_id
LEFT JOIN table t3 ON t3.parent_id = t2.role_id
WHERE t1.parent_id IS NULL

^^ hur djupt du än behöver gå i så fall.

[nästa bit inte strikt relevant ]

Du kan sedan manipulera utmatningen något på följande sätt:

SELECT
        (CASE 
        WHEN (t1.name IS NULL AND t2.name IS NULL) THEN t3.name
        WHEN (t1.name IS NULL AND t2.name IS NOT NULL) THEN t2.name
        ELSE t1.name END)  AS first,
        (CASE 
        WHEN (t1.name IS NOT NULL AND t2.name IS NOT NULL) THEN t2.name
        WHEN (t2.name IS NULL AND t3.name IS NOT NULL) THEN NULL
        ELSE t3.name END)  AS second,
        (CASE 
        WHEN (t1.name IS NOT NULL) THEN t3.name
        ELSE  NULL END)  AS third
FROM


  1. Hur tar jag bort från flera tabeller med INNER JOIN i SQL-servern

  2. Hur kan jag lägga till ON DELETE-begränsning i tabellen?

  3. utl_file.fopen Parametrar i Oracle

  4. Hur importerar jag moduler eller installerar tillägg i Postgres?