Jestem nowa w mysql. To jest mój tabeli:mysql rekursywna (drzewo) nadrzędna kategoria dziecka
kategoria tabela:
id | name | prent
----------------------------
1 | os | null
2 | linux | 1
3 | ubuntu | 2
4 | xubuntu | 3
5 | lubuntu | 3
6 | zubuntu | 3
7 | zubuntu 2 | 6
8 | suse | 2
9 | fedora | 2
10 | windowse | 1
11 | windowse xp | 10
12 | windowse 7 | 10
13 | windowse 8 | 10
14 | food | null
15 | dance | null
Każda kategoria ma rodziców i chcę, aby przygotować je do wyświetlania w menu rozwijanego.
To jest to, co chcę dostać:
id | name | depth
----------------------------
1 | os | 0
2 | -linux | 1
3 | --ubuntu | 2
4 | ---xubuntu | 3
5 | ---lubuntu | 3
6 | ---zubuntu | 3
7 | ----zubuntu 2 | 4
8 | --suse | 2
9 | --fedora | 2
10 | -windows | 1
11 | --windows xp | 2
12 | --windows 7 | 2
13 | --windows 8 | 2
14 | food | 0
15 | dance | 0
Tutaj kategorie nie są w porządku, a mój kod musi dostarczyć zamówienie na dzieci kategoriach daleko od swoich rodziców. Wcięcie przed nazwą jest podawane na podstawie głębokości rodziców każdej kategorii. Nie ma limitu liczby dzieci w każdej kategorii, jednak całkowita liczba kategorii nie przekroczy 100.
Czy istnieje zapytanie, które daje taki wynik? Wolę zapytanie, które może być uruchamiane w postaci kodu PHP w postaci active record.
nie. mysql nie obsługuje zapytań rekursywnych. będziesz musiał wykonać iteracyjną pętlę w swoim kodzie, aby przejść przez drzewo. –
Czy spojrzałeś tutaj? http://stackoverflow.com/questions/8633497/mysql-how-to-query-parent-child?rq=1 –
@EdManet, a jeśli chodzi o liczbę głębokości większą niż jeden i dwa? – monjevin