![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 23.10.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszytkich! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Od jakiegos czasu mecze sie z systemem zliczania produktow w podkategoriach sklepu internetowego, sprawa wydaje sie z pozoru banalna, ot jedno COUNT ... i po sprawie, jednak system nie dziala tak jak powinien. Mam 2 tabele Kategorie CAT_ID | ID_PARENT | CAT_NAME ... Produkty PR_ID | CATEGORY | PROD_NAME ... i tak na przyklad mamy takie drzewko: - KATEGORIA GLOWNA --- PODKATEGORIA 1 ---- PODKATEGORIA 2 ---- PODKATEGORIA 3 ----- PODKATEGORIA 4 Problem pojawia sie gdy chcemy zliczac produkty w gore, czyli kazda starsza kategoria zawiera sume produktow swoich "dzieci". Wchodzac do kolejnych kategori w sklepie, w nawiasie dobrze by bylo jak by byla podana nie suma produktow tylko w tej kategori ale rowniez we wszystkich pod nia podleglych ... Namieszalem troszke, ale mam nadzieje ze kazdy zrozumie o co mi chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Probowalem napisac funkcje oparta na rekurencji, co zreszta sie udalo, ale ona maluje drzewko takie jak widac wyzej, i niestety suma jest przekazywana w dol a nie w gore :/ z gory dziekuje za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) tomaxs Ten post edytował tomaxs 26.10.2004, 09:01:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
No swietnie, gotowy przyklad wykorzystania zapytan rekurencyjnych.
Jednak do tego problemu trzeba podejsc troszeczke powaznie, z kilku powodow. Gdy ilosc podkategorii jest bardzo duza, mozna krotko mowiac "zajechac baze", MySQL do takich celow sie raczej nie nadaje, warto w tym momencie poswiecic czas na PGSQL'a lub bazki komercyjne. kwestia tylko co na tym ma byc i ile wkładu finansowego przeznaczymy. Wazne jest tez by podczas wywolan funkcji przez sama siebie nie bylo czegos takiego jak laczenie i rozlanczanie z baza danych, polaczenie powinno "wisiec", bo jesli mamy bazke w zupelnie innym miejscu niz serwer www, to wydajnosc wtedy spada, tak samo z czasem ktory jest potrzebny na nawiazanie polaczenia z baza. Moze rzeczy na ktore sie nie zwraca za bardzo uwagi ale dla bardzo duzej ilosci zapytan wykonywanych w jednym skrypcie moze to przyspiszyc kilkukrotnie dzialanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:38 |