Non so se quello che sto chiedendo è anche possibile, ma ecco la mia situazione. Ho una tabella strutturato un po 'come questo:Come scrivere una query MYSQL che restituirà i figli annidati sotto i genitori?
+--------------------------------------------------+
| id | parent_id | name | category | ....
+--------------------------------------------------+
| 0 | -1 | item0 | 1 |
| 1 | 0 | item1 | 1 |
| 2 | 0 | item2 | 1 |
| 3 | 2 | item3 | 1 |
| 4 | 2 | item4 | 1 |
| 5 | -1 | item5 | 1 |
+--------------------------------------------------+
Un parent_id di -1 sarà significa che sia un elemento di "base" senza genitori. Ogni articolo avrà più colonne di informazioni. Ho bisogno di qualche uscita tutte le voci di una categoria annidato come la seguente:
item0 => item1
=> item2
=> item3
=> item4
item5
non so se ha senso o no, ma si spera che lo fa!
L'unico modo che posso pensare di fare questo è creare una query per ottenere tutti gli elementi "base" (query per righe con parent_id = -1) quindi scorrere tutte le righe risultanti, interrogando per le righe che hanno parent_id uguale all'ID della riga corrente, quindi ripetere il processo andando sempre più in profondità fino a quando non ci sono più figli per un articolo base.
C'è un modo migliore?
Grazie !!
vorrei andare per 'null' per indicare senza genitori –
Sembra una buona idea. Non so davvero cosa sto facendo ;-) – Nate
Puoi ottenere tutto in una volta e quindi costruire la struttura in php: http://stackoverflow.com/questions/2915748/how-can-i-convert- a-serie-di-genitore-figlio-relazioni-in-a-gerarchico-tre – jeroen