Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] Zapytanie - kategorie, Jak skonstruowac zapytanie SQL.
anas
post 2.11.2004, 10:33:21
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

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


Hej.

Mam pytanie odnosnie zapytania SQL.

Posiadam powiedzmy natepujaca tabele z Grupami towarowymi:

- GrupaID
- Nazwa
- RodzicID

i teraz chcialbym wysiagnac wszystkie rekordy az otrzymam w polu rodzic NULL - chodzi mi o stworzenie takiego posortowanego drzewka - a mianowicie to galezi tego drzewa.

Np. mam takie dane:
Kod
GrupaID | Nazwa     | RodzicID
-----------------------------------------
1       | Aparaty   | Null
-----------------------------------------
2       | Statywy   | 1
-----------------------------------------
3       | Wielofun  | 2
-----------------------------------------
4       | Kamery    | Null
-----------------------------------------
5       | Cyfrowe   | 4
-----------------------------------------
6       | Analog    | 4
-----------------------------------------
7       | Professio | 5

i teraz chce powiedzmy wyciagnac dane dla Nazwy Proffesio w taki sposob ze bede mial sortowanie od najstarszego rodzica czyli Kamery->Cyfrowe->Professio.

dzieki za kazda podpowiedz.

ps. zalezy mi na tym aby rozwiazac to na poziomie bazy danych

pozdrowka

anas
Go to the top of the page
+Quote Post
spenalzo
post 3.11.2004, 12:28:40
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Nie warto robić jednym zapytaniem...Da się, ale trzeba wiedzieć ile jest poziomów zagłębień itd itp -
Kiedyś dużo myślałem jak to zrobić, ale w koncu wybrałem najprostszą i najlepszą wersje - rekurencyjne pobieranie daych. Należy bowiem pamiętać, że od ilości zapytań znacznie wazniejsza jest ich skomplikowanie i ilość zwracanych danych - tymczasem np. 10 zapytań mniej obciąży baze niż 1 skomplikowane zapytanie (taki sposób jak obmyśliłem przy 10 stopniach zagłebien odwoluje sie 10 razy do tej samej tabeli) - strona na pewno bedzie szybciej sie generować przy kilku(-nastu,-dziesieciu) prostych zapytaniach niż jednym.

A jeżeli chcesz wiedzieć jak, to podsune rozwiązanie:
  1. SELECT L1.Nazwa AS L1nazwa, L2.Nazwa AS L2nazwa FROM kategorie L1 LEFT JOIN kategorie L2 ON (L2.RodzicID=L1.GrupaID AND L1.RodzicID IS NOT NULL) WHERE ....

Coś w tym stylu, bo nie mam teraz możliwości sprawdzenia


--------------------

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 07:13