Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Jak pobrac produkty wszystkich podkategorii z danej kategorii ?
Octobus
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nospor
post
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
Go to the top of the page
+Quote Post
Octobus
post
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.
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
Octobus
post
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
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
Octobus
post
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
Go to the top of the page
+Quote Post
nospor
post
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.

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 12:46