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

MySQL - Er det muligt at få alle underpunkter i et hierarki?

Dette er blot en Adjacency Model bord? Så er det ikke muligt i én forespørgsel uden at kende den maksimale dybde.

Stof til eftertanke er Administration af hierarkiske data i MySQL (selvom jeg ikke går ind for at bruge Nested Set Model for data, der ændres regelmæssigt).

Med mange (venstre) joins, mere specifikt:med lige så mange venstre joins som den maksimale dybde af træet, vil det være muligt i én forespørgsel. Dette er grunden til, at mange mennesker har tendens til at gemme 'dybden' af en bestemt kategori, så du vil være i stand til at filtrere og begrænse antallet af joinforbindelser til den samme tabel til et mere fornuftigt beløb.

Personligt, for regelmæssig ændring af data:Jeg har en tendens til at konfigurere en trigger på en indsættelse / opdatering, som vil gemme / cache den aktuelle 'sti' for en node baseret på id'er (for eksempel:en sti er '12/62/28/345 ', hvor hvert trin mellem afgrænsningstegnet / er den primære nøgle for en overordnet node i den korrekte rækkefølge (345s overordnede er 28, 28s overordnede er 62, osv.)), så jeg kan forespørge på den med kun én join som denne (/ bruges som separator):

SELECT j.*
FROM tablename o
JOIN tablename j
WHERE j.path LIKE CONCAT (o.path,'/%')
AND  j.id != o.id  -- skip parent asked for.
WHERE o.id = <the id of the node you're looking for>;



  1. Oversigt over datakomprimering i SQL Server

  2. hvordan kan jeg eksportere mysql database ved hjælp af ssh?

  3. MySQL FEJL 502:VÆLG * FRA tabel WHERE uid=1 ORDER BY id DESC LIMIT 0, 100; Sideinddeling virker ikke

  4. hvordan ændres CSS stilarter dynamisk ved hjælp af php/Mysql..jeg ønsker at skabe temaer, der er unikke for hver bruger?