2010-03-04 16 views
8

Ho una tabella di database che collega le posizioni insieme; una posizione può trovarsi in una posizione, che può trovarsi in un'altra posizione.MySQL - Recupero di una struttura ad albero

location (<id>, ....) 
location_parent (<location_id>, <parent_id>) 

Ecco il MySQL/PHP a scendere per una profondità di un:

$sql = "SELECT id FROM se_locations_services WHERE parent_locationid IN 
(SELECT location_id FROM se_locations_parent WHERE parent_id = '$locationid')"; 

Come faccio, dato un luogo genitore, ottiene tutte le sue sedi discendenti, non importa quanto in profondità, usando solo MySQL?

+0

Vedere http://stackoverflow.com/questions/587488/handling-hierarchy-data-in-database –

risposta

20

C'è un good-looking article sopra a mysql.com delineare vari modi di gestire dati gerarchici. Penso che fornisca una soluzione completa alla tua domanda e mostri vari approcci meno semplici, ma più veloci (ad es. Insiemi nidificati).

+3

+1 articolo molto interessante che hai collegato qui. Articolo –

+0

non più disponibile. –

+0

@Ed il sistema di ritorno è ancora in uso. Aggiornato. –

0

Dal dichiarazioni MySQL può restituire solo dati strutturati a tabella, come immagini la struttura ad albero restituita?

È possibile eseguire una selezione con la tabella [parent_id, child_id], ma richiede una tabella temporanea e l'ho vista eseguita su DB2, non su MySQL.

controllare questo articolo per l'implementazione su strutture ad albero memorizzati in MySQL: http://articles.sitepoint.com/article/hierarchical-data-database/

1

MySQL manca il supporto nativo di funzioni gerarchiche, in modo da avere per emulare utilizzando le variabili di sessione per mantenere lo stato di ricorsione.

Vedi questo articolo su come implementare la funzione:

Problemi correlati