![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 2 Dołączył: 23.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Posiadam następujący problem - wyszukuje pewne produkty za pomocą kwerendy
`promoted` zapisuje w formacie zgodnym z formatem IN, tj. np. 10,13,15,16,17,18,20,21 . Do niedawna działało wspaniale, niestety po którejś z aktualizacji MySQL taki sposób przestał działać i wyświetla się tylko jeden produkt (pierwszy w `promoted` czyli w przykładzie produkt o ID 10). Co robić by uniknąć tego problemu i nie dzielić tego na dwie kwerendy i explode w PHP? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
samo zapytanie w sobie wyglada na prawidlowe (nieoptymalne, ale prawidlowe)
sprawdz co zwraca ci subquery : po mojemu powinien zwraca ci jeden rekord, wiec i glowne zapytanie zwraca ci jeden rekord. odpowiadajac na pytanie, czy da sie uniknac dzielenia na kilka etapow,: da sie ale po co? w zaleznosci od maszyny, na jakiej masz serwer - mozesz uzyskac wzrost wydajnosci podzapytania w mysql spowalniaja, i to znacznie. jesli bardzo nie chcesz - mozesz wykorzystac polecenie << doczytaj sobie w manualu. poza tym, w php to raczej implode niz explode ![]() j. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 2 Dołączył: 23.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
W `promoted` mam produkty zapisane w postaci 1,2,3,4 (tj. oddzielonej przecinkami) i chcę wyszukać produkty, które są właśnie w tej kolumnie. Mogę zapisywać na inny sposób, jednakże muszą być w jednym wierszu by zachować spójność danych. Myślałem nad REGEXP, co wy na to?
Edit: Udało się rozwiązać problem za pomocą FIND_IN_SET(). Pozdrawiam ![]() Ten post edytował dragonsokol 1.06.2012, 22:04:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:21 |