Mam problem z sortowaniem (niestandardowym).
Moje kryteria to:
-promocje (0/1)
-data (DESC)
-godzina (DESC)
-set promocje (war1,war2...,nul)
Zapytanie
SELECT mid, uid, category, title, b_title, promotion, date, image_1, mid, city, promotion_c, (SELECT CASE WHEN FIND_IN_SET(promotion_c,'rybnik')=1 THEN 2 ELSE 1 END) AS sort FROM at20_adverts_norm WHERE db_data_id=1 AND publicate=1 AND category = 78 AND date<='2011-07-05' ORDER BY sort DESC, date DESC,time DESC
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