![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy takie zapytanie wogóle jest możliwe. Opisze moze najpierw moją strukturę tabel...
![]() Teraz jesli chcę wylistować całą strukture to robię zapytanie:
Jednak gdybym chciał pobrac tytuł jakiegoś węzła to musze juz wykonac 2 zapytania:
Sprawa komplikuje się gdy chce wylistować wszystkie elementy. Jeśli będę miał ich np 1.000 to nie zrobię przeciez tylu zapytań. Bardzo prosze o pomoc. Ten post edytował Black-Berry 20.08.2008, 09:35:52 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 300 Pomógł: 32 Dołączył: 31.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dla mnie taka struktura bazy jest to tak samo głupi pomysł jak prawie każdy przypadek używania $$nazwa_zmiennej. Co chcesz właściwie osiągnąć ? Kategorie powinny być raczej nadrzędne w stosunku do artykułów/newsów, zapewne zbytnio się nie różnią i mogły by być jedną tabelą, z ewentualnie dodatkowym polem type.
Nawet jak uda się komuś skonstruować jedno zapytanie, które robi to o co Tobie chodzi, to i tak przy obecnej strukturze wypaczasz ideę klucza obcego - powinien on być jednoznacznie połączony z jedną tabelą - inaczej rezygnujesz z mechanizmów utrzymania spójności np. w tej chwili musisz ręcznie usuwać rekord z tree_structure po skasowaniu jakiegoś artykułu. |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Przecież ta struktura to pomyłka. Jedyna rada jaką Ci można dać to: zmień to. Przemyśl od nowa i zmień.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Naprawdę nie widze innego sposobu na zapewnienie struktury drzewiastej. Jeśli dodam nowy typ np 'produkt' to bedzie on miał pola takie jak cena, ilosc, ocena kupujacych, klikniecia, ilosc zamowien, waga, wymiary itd. itd... Przyznasz ze wtedy o wiele bardziej rozni sie to od kategorii.
Edit: Unikatowy identyfikator pola obcego jest tworzony z połaczenia pól 'reference_id' oraz 'type'. Nie rozmumiem skad te beszty. przeciez nie ma innej możliwości. Przynajmniej ja nie potrafię sobie tego wyobrazić. Moze jakies sugestie ? -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Naprawdę nie widze innego sposobu na zapewnienie struktury drzewiastej. To masz słabą wyobraźnię. Strukturę drzewiastą robi się w jednej tabeli. w której odpowiednie pole rekordu wskazuje na ID innego rekordu tej samej tabeli jako na rodzica. To bardzo ogólny przypadek. Dzieś na forum już o tym pisałam. Jeśli chcesz mieć tabelę kategorii to ok, ale w tabeli produktów dajesz pole w którym jest id kategorii do której produkt należy. Jeśłi zaś dany produkt może należeć do wielu kategorii (a to już niej est struktura drzewiasta) to poza tabelą produktów i tabelą kategorii będziesz musiał zrobić tabelę relacji między id produktu i id kategorii do których produkt nalezy. Nie rozmumiem skad te beszty. przeciez nie ma innej możliwości. Przynajmniej ja nie potrafię sobie tego wyobrazić. Moze jakies sugestie ? To, że nie umiesz sobie tego wyobrazić nie oznacza, że nie ma innej możliwości. ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To masz słabą wyobraźnię. Strukturę drzewiastą robi się w jednej tabeli. w której odpowiednie pole rekordu wskazuje na ID innego rekordu tej samej tabeli jako na rodzica. To bardzo ogólny przypadek. Dzieś na forum już o tym pisałam. No i własnie tak działa to co mam. Tabela główa trzyma strukturę, a poszc zególne węzły zapisane są w odzielnych tabelach. Nie rozumiem w dalszym ciągu w czym rzecz? Może za mało opisałem sposób działania: Struktura drzewiasta trzymana jest w tabeli tree_strukture. Kombinacja pól type oraz reference_id służą do odnalezienia konkretnego węzła. -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
No i własnie tak działa to co mam. Tabela główa trzyma strukturę, a poszc zególne węzły zapisane są w odzielnych tabelach. W takim razie graf który narysowałeś nie oddaje tej struktury a po Twoich wyjaśnieniach sugeruje, że zarówno kategoria może być dzieckiem artykułu jak i artykuł może być dzieckiem kategorii. Poza tym nie widzę w tej drzewiastej tabeli połączenia typu rodzić dziecko. Które pole wskazuje na rodzica a które na potomka? połączenia -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jest pole parent_id oraz pola left_id, right_id (Storing Hierarchical Data in a Database). Nie jest to jednak ważne w moim pytaniu dlatego nie pisałem o tym.
I masz rację. Zarówno artykuł może być dzieckiem kategorii jak i kategoria dzieckiem artykułu ale tylko teoretycznie. W praktyce takie opcje ograniczam za pomocą kreatora struktury. Artykuły też muszą mieć opcje potomków (np. komentarz będzie takim przykładem potomka dla artykułu ale to już nie jest kwestia tego wątku). edit: Wracając do tematu to jak możnaby inaczej ten problem rozwiązac? Jak zaprojektować strukturę drzewa która na węzłach miałaby elementy różnego typu ? Ma ktoś pomysł ? Ten post edytował Black-Berry 28.08.2008, 12:57:28 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 4 Dołączył: 24.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
sprawa jest banalna nie wiem o co tyle debatowania
powpisuje tylko prawidłowe nazwy i będzie grać i buczeć http://dev.mysql.com/doc/refman/5.0/en/con...-functions.html |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@dymsza rządzisz:)
Ten post edytował Black-Berry 9.10.2008, 22:30:30 -------------------- http://www.berry.nazwa.pl/edico/public_html/index.php ----> under construction
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:34 |