Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]sortowanie po kolumnie SET, wykorzystanie FIELD lub FIND_IN_SET
rob_roy
post
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
  1. 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
  2. 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
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.09.2025 - 19:18