![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
Witam serdecznie,
Mam problem z zapytaniem:
Kiedyś to zapytanie działało poprawnie, jednak od jakiegoś czasu przestało.... Według serwerowni "zapytanie jest zbyt długie i wykonuje się 10 sekund". Czy ma ktoś może jakiś pomysł jak to zoptymalizować? Bardzo proszę o pomoc, Northwest |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
WHERE kategoria IN(1,2,3) itd.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
czyli coś takiego:
(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 35 Dołączył: 29.12.2014 Skąd: Otwock Ostrzeżenie: (0%) ![]() ![]() |
Jak rozumiem to są jakieś wybrane kategorie tak?
Jesli nie zrób SELECT-WHERE=SELECT Druga opcja to zamienić te wszystkie OR na IN ARRAY Wtedy zamiast tego nawiasu masz:
Druga opcja. Jeśli te kategorie są w jakiejś tabeli i spełniają jakiś wspólny warunek możesz zrobić:
Np. te numerki to dajmy na to id z tabeli kategorie i muszą spełniać warunek spelnia = 1
Wygodniejsze bo unikasz dodatkowego ręcznego dopisywania jak dojdzie nowa kategoria Ten post edytował SpiritCode 30.12.2014, 11:07:30 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
czyli coś takiego:
(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/smile.gif) Tak. Indeksy na `kategoria` tez mogą pomóc. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
tak, to są numery ID poszczególnych kategorii które wybrał użytkownik....
Przepraszam za głupie pytanie, ale które z powyższych zapytań będzie najbardziej optymalne?;-) tabela z danymi wygląda tak:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 35 Dołączył: 29.12.2014 Skąd: Otwock Ostrzeżenie: (0%) ![]() ![]() |
Skoro mówisz, ze to wybrane kategorie przez użytkownika to bez wątpienia metoda IN (id, id, id [..]).
Metodę z drugim select którą Ci przedstawiłem warto używać jeśli masz np. Kategorie podzielone na kilka grup i każda z nich ma swoją grupę zaznaczoną. Wtedy jeśli szukasz kategorii z danej grupy Dajesz tego SELECT'a z warunkiem na grupę i pobierasz tylko te (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
Dziękuję za pomoc :-)
Mam jeszcze jedno pytanie, tą listę kategorii generuje sobie takim "dzikim" kodem:
tabela wygląda następująco:
Dałoby się to jakoś poprawić? Przez ten kawałek kodu skrypt mega długo się generuje (IMG:style_emoticons/default/sad.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 35 Dołączył: 29.12.2014 Skąd: Otwock Ostrzeżenie: (0%) ![]() ![]() |
Ależ oczywiście (IMG:style_emoticons/default/wink.gif)
Pytanie tylko czy chcesz pobrać wszystkie kategorie w górę czy w dół? Dzięci czy rodziców? dla wszystkich rodziców danej kategorii
dla wszystkich dzieci:
Sprawdź czy działają (IMG:style_emoticons/default/biggrin.gif) zamiast {$id} podajesz id kategorii dla której szukasz kategorii w górę lub w dół edit: poprawka pierwszego zapytania. Brakło pól Ten post edytował SpiritCode 30.12.2014, 13:13:29 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
dziękuje, działa (IMG:style_emoticons/default/smile.gif)
chociaż chyba jednak nie do końca ;-) Jeśli jestem na "najwyższym poziomie" danej kategorii - to nie wyświetla produktów (zastosowałem 2 zapytanie).... Dopiero jak wybiorę jakiś konkretny parent - do której są przyporządkowane produkty - to się pokazują.... Chciałbym żeby w momencie gdy mam coś takiego: 1. kategoria główna 2. podkategoria 3. grupa 4. podgrupa To po kliknięciu KATEGORIA GŁÓWNA - widzę wszystkie produkty z poziomu 1,2,3,4. Po kliknięciu na GRUPA - widzę produkty z poziomu 3 i 4.... (IMG:style_emoticons/default/smile.gif) Nie wiem czy jasno to opsiałem?(IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 35 Dołączył: 29.12.2014 Skąd: Otwock Ostrzeżenie: (0%) ![]() ![]() |
To łączysz zapytania.
Zaciągnij sobie wszystkie dzieci dla interesującej Cię kategorii. Za pomocą wyciągniętych z nich ID wyszukaj produkty które takie ID mają |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
tzn mam zapytanie które generuje mi najpierw te kategoria IN (......) i potem dodaje je to, co wygeneruje się w zapytaniu kategorii do produktów:
select * from produkty where enable = 1 and kategoriaIN(....) i właśnie na najwyższym poziomie nie wyświetla mi produktów - tylko na niższych... (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 35 Dołączył: 29.12.2014 Skąd: Otwock Ostrzeżenie: (0%) ![]() ![]() |
Nie no zapytania które Ci podałem zwracają Ci kategorie od tych co podałeś w dół oraz w górę, łącznie z tą wybrana kategorią (IMG:style_emoticons/default/smile.gif)
edit: czyli tak (IMG:style_emoticons/default/biggrin.gif) ale to mam rozumieć, że nie chcesz wyświetlać produktów z tych kategorii których szukasz dzieci lub rodziców? Ten post edytował SpiritCode 30.12.2014, 14:02:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:44 |