![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
witam,
Mam taki mały kłopot mam nadzieję, że nie skąplikuje tego zabardzo. chce policzyc produkty danej kategori i wszystkich ich dzieci dzialac dziala ale mam ponad 2000 tys zapytan bez pytań ..... w tabeli kategorie mam id|name|parent i chce zeby powiedzmy jak podam jakas glowna kategorie to skrypt sprawdzi jakie ma dzieci i zrobi mi zapytanie typu
potrzebne mi to do sklepu np ktos wejdzie do kategori komputery i pokazuje mu wszystkie produkty z tej kategori i wszystkich dzieci nalezoczych do niej Ten post edytował acztery 27.02.2006, 00:29:16 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
hehehe nie o to chodzi wiem do czego jest WHERE ale jezeli w kategori 5 jest 100 innych to co to ich nie policze ... musze najpier dowiedziec sie ID wszystkich dzieci kategori w ktorej jestem
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Przedstaw dokładniej problem bo z tego co piszesz nic nie można zrozumieć.
Jakiś przykład może. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
ludzie wy czytac nie umiecie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) jak mam to policzyc jak nie znam wszystkich ID dzieci to jak mam zrobic takiego selecta.
i trzeba to wygenerowac np do zmiennej $where
Ten post edytował acztery 27.02.2006, 11:20:54 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
yyyy? po co te nerwy?
Moje zapytanie sprawdza czy id rodzica zgadza się z tym id co chcesz. To chyba ty nie umiesz czytac (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Skoro znam id rodzica, to na grzyba mi id dziecka? |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Ja tutaj widze blad na etapie projektowania bazy.. z taka struktura jak podajesz nie da sie tego sensownie zrobic i musisz najpierw pobrac wszystkie wezly dzieci (rekurencyjnie az do samego konca) i dopiero potem wyswietlac.
Gdybys zastosowal jakas inteligentniejsza forme drzewek SQL to daloby sie to zrobic latwiej.. teraz to juz troche musztarda po obiedzie. |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
hmmm, znaczy, że dana kategoria może mieć dzieci, wnuki i prawnuki? Myslalem ze ograniczamy się tylko do dzieci (pierwszego poziomu). Dlatego takie zapytanie dalem. Jesli jest kilka poziomow dzieci, to faktycznie musztarda po obiedzie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Trzeba by najpierw nasmazyc pare rekurencyjnych zapytan by pobrac id, a dopiero potem produkty |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
FIDO . a jak to rozwiązać jak zaprojektowawć zeby to nie brały tyle zapytać. (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) jaka struktura bo nie wiem na takiej struktrzue nie da sie tego zrobic ?
PS struktura categ jest taka:
ALBO jakto zrobic jednymzapytaniem Cytat Ja tutaj widze blad na etapie projektowania bazy.. z taka struktura jak podajesz nie da sie tego sensownie zrobic i musisz najpierw pobrac wszystkie wezly dzieci (rekurencyjnie az do samego konca) i dopiero potem wyswietlac.
Ten post edytował acztery 27.02.2006, 11:41:08 |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
http://forum.php.pl/index.php?showtopic=35091 - tutaj masz troche informacji na temat drzewek w SQL'u
Akurat do tego typu zapytania nadaly by sie np. drzewka Materialized Path (jedno zapytanie do pobrania produktow z wybranej galezi), ale musisz przemyslec jakie beda najczestsze operacje i w ogole co bedzie potrzebne, zeby dobrac jakas optymalna strukture. Lektura powyzszego watku powinna to troche ulatwic. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
spoko LIKE to dobre rozwazanie ale za duzo zmian to juz teraz ... np allegro.pl widze ze ma w adresie jeden ciagly numerkategorii i na podstawie jedo tworza where (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) gdzie tkwi fenomen
Ten post edytował acztery 27.02.2006, 11:58:50 |
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Jest przeciez wiele roznych sposobow na realizacje drzewek w bazie.. skad pewnosc, ze allegro chodzi w ogole na MySQL ? Byc moze maja jakas bardziej zaawansowana baze z procedurami.. wtedy mozna juz zaszalec.
Zreszta nawet przy takich sciezkach mozna to zrobic, tylko ze dwoma zapytaniami (albo zapytaniem z podzapytaniem), pierwsze pobiera sciezke dla danej kategorii, a drugie produkty z tej kategorii (i podrzednych). |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
to jak to wlasnie zrobic dwuma zapytaniami po teraz robi ponad 2 tys przy duzej ilosc kategori a jak bedzie duzoludzi na stronie to strona bedzie sie otwierala miesac??
|
|
|
![]()
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Mniej wiecej tak:
Kod SELECT p.*
FROM produkty p INNER JOIN kategorie k ON k.id = p.kat_id WHERE k.path LIKE CONCAT( (SELECT path FROM kategorie WHERE id = 1234) , '%') |
|
|
![]()
Post
#16
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
W mysql nie można tego zrobić przy pomocy 2 zapytań, jeśli nie chce się wykorzystać drzewka a'la IP, ponieważ wersja instalowana w tej chwili na większości serwerów nie pozwala narazie na tworzenie procedur.
Wydaje mi się jednak, że w twoim przypadku dodanie odpowiedniego pola z informacują o pozycji danej katerogii w drzewie i zapisanie tego w postaci adresu "IP" czyli numer_kategroii. numer _odkategorii ... i późniejsze wyszukiwanie całej gałęzi przy pomocy LIKE. Zauważ, że wygenerowanie takich informacji dla istniejących danych musiałbyś zrobić tylko raz. A dla kolejnych, dodawanych dopiero - uzupełniałbyś to pole na bieżąco. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
jezeli nic innego mi nie przyjdzie do glowy to tak zrobie a roziwazanie tego typu zeby dodac pole level ? ale wtedy bede musial znowu wyszukac wszystkie levele danej kategorii nie bylo by tego tyle co teraz
PS z tym ze ja dodalem 2 tys kategori na tym co teraz mam to uunac zmienic na IP i znowu dodawac Masakra .. |
|
|
![]()
Post
#18
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat(acztery @ 2006-02-27 12:38:31) PS z tym ze ja dodalem 2 tys kategori na tym co teraz mam to uunac zmienic na IP i znowu dodawac Masakra .. Przeciez nikt Ci nie kaze robic tego recznie... Prosty skrypcik iterujacy po drzewku od korzenia zalatwi sprawe. |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
OK robie to tak ze dodam jedno pole o nazwie path i tam bedzie wszystko i na podstawie jego bede liczyl .
ale przy dodawaniu kategorii nie wiem zabardzo jak te path ma sie ukladac jak dodaje do 1kategori to mam 1 jak do 2 to 2 jak wejde do 2 i tam cos dodam to 2.1 ma ktos cos co generuje cos takiego ? |
|
|
![]()
Post
#20
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.09.2025 - 22:10 |