![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
potrzebuje zeby w sklepie, w glownej kategorii wyswietlaly sie produkty z wszystkich podkategorii. Przygotowalem taka tabele `kategorie`: (IMG:http://my.jetscreenshot.com/demo/20180410-jbuh-19kb.jpg) wchodzac do 1 kategorii Akcesoria do Iphone, chce miec pobierane od razu produkty rowniez z kategorii Iphone. Przykladowe zapytanie dla kategorii: Cytat select * from `baza` inner join `produkty` on `baza`.`id_produktu` = `produkty`.`id` inner join `produkty_kategorie` on `baza`.`id_produktu` = `produkty_kategorie`.`id_produktu` inner join `kategorie` on `produkty_kategorie`.`id_kategorii` = `kategorie`.`id` where `kategorie`.`id` = 3 wiem ze moge pobrac najpierw kategorie, zobaczyc jakie ma route i dopiero konstrulowac zapytanie, ale pomyslalem ze moze da sie jednym zapytaniem jakos to rozwiazac ? Cos w rodzaju Cytat where (`kategorie`.`id` = 3 or `route` like CONCAT(`route`,'/',`id_kategorii`,'/%') ) tylko nie potrafie tego ostatniego napisac Ten post edytował Octobus 10.04.2018, 13:31:12 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zacznij od przygotowania poprawnej struktury drzewiastej np
google: drzewka ip |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
wlasnie z tego nie chcialem korzystac ... wzoruje sie troche na magento 2, tam jaka taka strukture bazy danych. Dla mnie jest prostrza niz drzewa ip ktore kiedys robilem i przez nie mialem wiecej problemow niz pozytku. Wole cos prostrzego.
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja wiem, ze ta podstawowa wersja drzewka jest prosta wizualnie ale jest cholernie nie optymalna. A takie drzewka IP wbreb pozorom tez sa banalne. Od dodajesz jeszcze sciezke kategorii.
No, ale twoja sprawa. Moment, nie dolukalem, przeciez teraz wlasnie masz drzewka ip... wszystko co masz miec masz w route lol... slepak ze mnie |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
tylko mam teraz zrobione ze jest dodatkowe zapytanie o kategorie i dopiero tworze regule
Kod where (`kategorie`.`id` = 3 or `route` like "3/%" ) w razie gdyby route kategorii aktualnej bylo np. 5/2/3, zeby dac like "5/2/3/%" ale tak pomyslalem ze lepiej byloby to zrobic w jednym zapytaniu, tylko nie potrafie go napisac ... ponizsze oczywiscie nie dziala Kod where (`kategorie`.`id` = 3 or `route` like CONCAT(`route`,'/',`id_kategorii`,'/%') )
Ten post edytował Octobus 10.04.2018, 14:59:20 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no to lecim. Nie wiem po co do tego contact dodajesz route...
where (`kategorie`.`id` = 3 or `route` like '0/3%' to bedzie oczywiscie zle gdy bedziesz mial jakas kategorie z id np 34. Dlatego tez ja w route dodaje / zawsze na koncu czyli nie 0/3 a 0/3/ wowczas where (`kategorie`.`id` = 3 or `route` like '0/3/%' Ja rownie w route trzymam id danego rekordu czyli mialbym route 0/3/ oraz 0/3/13/ wowczas w ogole bajka where (`route` like '0/3/%') No i ja nie trzymam tego 0 w route bo jest totalnie zbedne |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
ok, dobre rady, zastosuje je. Pytanie tylko czy da sie uzyc `route` like '0/3/4%' majac podane jedynie id_kategorii = 4 w jednym zapytaniu. Czy moze za mocno kombinuje i juz niech sie pobiera za kazdym razem info o route kategorii ? Wydaje mi sie po prostu ze najlepiej w jednym zapytnaiu wszystko zawrzec
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Mozesz probowac sie bawic w podzapytanie czy dodatkowego joina ale po co? Przerost formy nad trescia. Pobierz sobei dodatkowo te route i po sprawie.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 12:46 |