Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%)
|
Witam,
jest jakieś drzewo, powiedzmy, że produktów (id | parentid). Do produktów są przypisane tagi (osobna tabela z tagami i tabela łącząca). I teraz chce wyświetlić wszystkie produkty mające przypisany jakiś tag. Ale chcę wyświetlić je w formie drzewa (kilka poziomów). I teraz jest trudność, bo tagi przypisuje zwykle do produktów (nie do kategorii). Czyli pobranie tabeli z drzewem z prostym warunkiem WHERE odpada, bo jeśli jakiś rodzic nie ma odpowiedniego tagu to nie zostanie wyświetlony, jego dzieci też nie. A jeśli mają odpowiedni tag to powinny. Np rodzic "monitory" nie ma tagu lcd, jego potomek "monitory lcd" już ma ten tag, i oczywiście wszystkie monitory lcd w grupie "monitory lcd" mają tag lcd. Pobierając drzewo z prostym warunkiem WHERE nie wyświetlę kategorii "monitory" bo nie ma tagu lcd, czyli nie wyświetlę żądnych monitorów. Nie mam pojęcia jak to zrobić żeby było dobrze. Jedyne co wymyśliłem to mając id (powiedzmy 12345) kategorii mógłbym rekurencyjnie sprawdzać czy któryś z potomków na dowolnym poziomie nie ma odpowiedniego tagu. Jeśli ma to wyświetlam kolejnych potomków kategorii o id=12345 aż dojdę do produktu który ma szukany tag. I tak dla każdego id. Bardzo zagmatwane. Jak to lepiej zrobić?? Wyświetlane produktów jako listy odpada ma być drzewko (IMG:style_emoticons/default/biggrin.gif) Uwziąłem się i chcę się dowiedzieć jak to wykonać. pozdro (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%)
|
Tutaj mogę się zgodzić tylko z wydajnością.
Oczywiście spowalnia to strasznie serwer ale możesz tak jak już napisałem stworzyć tablicę do nawigacji jednym zapytaniem. Dalej lecisz po tablicy fereachem ile razy chcesz. Co nie zmienia faktu, że pierwsza funkcja robi mnóstwo zapytań. No ale mówimy tu o drzewie podkategorii - jakoś trzeba to rozwiązać. Co do mysql'a to i tak wydajniej jest obsłużyć większość zapytań w php rozbijając to na porcje. Poza tym to co tyczy się pssql - polecam artykuł http://www.eioba.pl/a77069/jak_dziala_mysq...m_optymalizacje myisam jest po prostu dużo szybszy w każdym wypadku. Fakt nie obsługuje transakcji ale tutaj polecam zend FM lub jakikolwiek inny FM, mają pełno klas wspomagających te rozwiązania. Acha - nie chcę tutaj w żadnym wypadku dyskryminować pssql. Wiele osób napisze, ze jest o wiele lepszy, itp. Ja na ten temat się nie wypowiem. Mogę powiedzieć, tylko że rezygnując z wydajności silnika myisam w mysql możemy skorzystać ze stabilności i funkcjonalności silnika innodb w mysql. Pozdrawiam cudny Ten post edytował cudny 12.01.2010, 00:03:50 |
|
|
|
nowy_pehapowiec problem z pobraniem produktów z drzewa spełniających okreslone warunki 17.10.2009, 17:48:29
seth-kk zainwestuj w lepsza strukture drzewa - np taka jak... 17.10.2009, 18:04:25
nowy_pehapowiec A korzystając ze struktury drzewa opartej na adres... 19.10.2009, 09:16:20
cudny Tutaj może pomóc join left jeśli cię dobrze zrozum... 19.10.2009, 14:34:40
vokiel Może pomoże Ci info na blogu Mateusza Wójcika: Drz... 19.10.2009, 16:52:01
wlamywacz Według mnie najlepszym sposobem jest nestedset gdy... 19.10.2009, 20:13:52
nowy_pehapowiec Cytat(cudny @ 19.10.2009, 15:34:40 ) ... 20.10.2009, 11:44:32
vokiel O ile pamiętam z Twojego wcześniejszego opisu, to ... 20.10.2009, 14:07:33
wlamywacz CytatAż tak słaby z sql nie jestem smile.gif Ale c... 20.10.2009, 16:43:42
nowy_pehapowiec Cytat(vokiel @ 20.10.2009, 15:07:33 )... 21.10.2009, 07:19:04
xajart to co chciałeś uzyskać, moim zdaniem się da, jeżel... 16.11.2009, 00:30:43
cudny Trochę późno na odpowiedź ale może się komuś to pr... 30.12.2009, 01:52:35
wlamywacz Lepiej pokaż jak stoi to z wydajnością. Poza tym t... 7.01.2010, 14:53:57 ![]() ![]() |
|
Aktualny czas: 8.12.2025 - 22:57 |