![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 29 Pomógł: 1 Dołączył: 21.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z sortowaniem (niestandardowym). Moje kryteria to: -promocje (0/1) -data (DESC) -godzina (DESC) -set promocje (war1,war2...,nul) Zapytanie
Wiem, nie jest to eleganckie ale tak sobie życzą i nie mam możliwości, całe szczęście że tabela niezbyt duża bo ten CASE... Heh szkoda gadać. Powyższe zapytanie działa elegancko tak jak chce za wyjątkiem przypadku kiedy w kolumnie SET o nazwie promotion_c jest więcej niż jeden zestaw promocji np. war1, war2. Dla samego war1 działa gdy więcej nie znajduje żądanych wartości. Próbowałem też zmienić funkcję FIND_ .. na FIELD. Eksperymentowałem też z operatorami >= ale efekt mizerny. Macie jakieś pomysły jak to usprawnić aby gdy w kolumnie SET jest więcej wartości, niezależnie od tego czy np. war1,war2,war3 będę znajdował np war2 ? Pozdrawiam -------------------- IF(rada===true){ pomógł++; echo 'Kliknij pomógł ^ ^';}
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie: =1
a: >0 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No ale zajrzyj do manuala i zobacz w jakiej kolejności podaje się dane argumenty....
http://dev.mysql.com/doc/refman/5.0/en/str...ion_find-in-set -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
-Gość- |
![]()
Post
#5
|
Goście ![]() |
Poradziłem sobie...
Funckja FIND_IN_SET sie nie sprawdza.. Za to FIELD i użycie wartosci bitowych działa doskonale FIELD(promotion_c,1,2,3,5,9,15)>0 Wymaga tylko binarnego przeliczenia żądanych wartosci: np 00001 =1 00010 =2 00011 =3 00101 =5 01001 =9 01111 = 1 + 2 + 4 +8 Pozdrawiam |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Się nie sprawdza, bo używasz w złej kolejności - pisałem ci o tym...
nie: FIND_IN_SET(promotion_c,'sz1') > 0 a: FIND_IN_SET('sz1',promotion_c) > 0 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:58 |