Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Duzy problem z zapytaniem, Dołączony schemat :)
Black-Berry
post
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...

(IMG:http://edico.nazwa.pl/schema.jpg)

Teraz jesli chcę wylistować całą strukture to robię zapytanie:
  1. SELECT * FROM tree_structure

Jednak gdybym chciał pobrac tytuł jakiegoś węzła to musze juz wykonac 2 zapytania:
  1. SELECT `reference_id`, `type` FROM tree_structure WHERE `id`=5;
  2. SELECT `title` FROM (/*tabelę określam po typie*/) WHERE id = (/*zmienna `reference_id`*/)

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Black-Berry
post
Post #2





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 ?
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(Black-Berry @ 20.08.2008, 11:15:12 ) *
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.

Cytat(Black-Berry @ 20.08.2008, 11:15:12 ) *
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. (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
Go to the top of the page
+Quote Post
Black-Berry
post
Post #4





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 20.08.2008, 11:43:04 ) *
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.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(Black-Berry @ 20.08.2008, 11:59:26 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 02:37