Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] budowa drzewa grup towarów
Forum PHP.pl > Forum > Przedszkole
czychacz
mam za zadanie na podstawie bazy danych MySQL zbudować drzewo grup towarów.
tabela, na podstawie której mam zrobić to drzewo:
  1. id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
  2. id_nadrzedne INT NOT NULL DEFAULT 0
  3. nazwa VARCHAR(20) NOT NULL UNIQUE


jeśli id_nadrzedne = 0 to rekord jest traktowany jako korzeń (czy jak to się zwie biggrin.gif)
zakładając, że w bazie są już jakieś dane przykładowe:
Kod
1, 0, 'Procesory'
2, 0, 'Płyty główne'
3, 0, 'Dyski twarde'
4, 3, 'SATA'
5, 3, 'PATA'
6, 4, 'Western Digital'
7, 4, 'Seagate'
8, 5, 'Samsung'
9, 1, 'AM3'
10, 9, 'Athlon II 250'

powinienem otrzymać drzewo:
Kod
Procesory
|--AM3
   |--Athlon II 250
Płyty główne
Dyski twarde
|--SATA
|  |--Western Digital
|  |--Seagate
|--PATA
   |--Samsung


jedyne rozwiązanie, jakie przychodzi mi do głowy to programowa obróbka całej tabeli: pobranie i odpowiednie sortowanie przez program, a nie przez bazę... czy da się to jakoś inaczej rozwiązać?
Crozin
http://www.google.com/search?hl=en&saf...mp;aql=&oq= - 12 mln wyników - a Ty nawet w jeden nie zajrzałeś? Było to poruszane dziesiątki razy...
czychacz
czyli, jak widzę, nie ma rozwiązania mojego problemu. nie mogę zmodyfikować tej bazy, a poziom hierarchii drzewa może być dowolny...
cojack
Musisz rekursywnie przeprowadzić zapytanie, które Ci wybierze wszystkie dzieci z sql'a. A struktura z parent_id jest stara jak świat i mało wydajna. W necie aż huczy od rozwiązań tego problemu.
JoShiMa
Cytat(czychacz @ 7.02.2011, 11:51:25 ) *
czyli, jak widzę, nie ma rozwiązania mojego problemu. nie mogę zmodyfikować tej bazy, a poziom hierarchii drzewa może być dowolny...

Jeśli nie możesz modyfikować bazy to nie pozostaje CI nic innego jak obrabiać dane na poziomie PHP. W przeciwnym razie poradziłabym Ci zmienić konstrukcję drzewa i zaimplementować netsted set.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.