sql >> Database >  >> RDS >> Mysql

Hiërarchische gegevens in MySql

Zoals hierboven aangegeven is dit niet echt recursief, maar als je weet hoeveel stappen diep je maximaal moet gaan, kun je iets in de trant van deze gebruiken (gebruik misschien PHP om de query te genereren):

Ik zou eerst de ouder-ID instellen op NULL in plaats van 0, maar dat is persoonlijke voorkeur.

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

^^ hoe diep je in dat geval ook moet gaan.

[volgende stukje niet strikt relevant ]

U kunt de uitvoer dan als volgt manipuleren:

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. Waarschuwing:mysql_real_escape_string():Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:NEE) .../public_html/checklogin.php

  2. SELECT van View bevat een subquery in de FROM-component

  3. Records van vandaag ophalen in MySQL

  4. Bereken lopend totaal / lopend saldo