quality
21.11.2008, 10:12:06
Witam
Mam takie zapytanie :
SELECT * FROM `jos_content` WHERE id IN ( 7616, 1168, 992, 2047, 41 ) ;
Mysql sortuje mi to automatycznie od najnizszego id.
Jak zrobic zeby rekordy byly w takiej kolejnosci jak podane po kolei w IN ?
nospor
21.11.2008, 10:13:09
nie da sie tego od tak zrobic. musisz napisac wlasną regulke na sortowanie:
http://nospor.pl/mysql-faq-n25.html#faq-5
quality
21.11.2008, 10:42:40
Hmm to chyba nie rozwiazuje mojego problemu.
No bo niby jak napisac wlasne sortowanie tym sposobem ?
SELECT *, CASE pole
WHEN 2 THEN 1
WHEN 4 THEN 2
WHEN 3 THEN 3
WHEN 1 THEN 4
ELSE NULL
END as sortowanie
FROM tabela
ORDER BY sortowanie
ja nie mam zadnych danych do sortowania jedynie co mam to wartosci id ewentualnie po rozbiciu tablice posortowana
array(0=>7616,1=> 1168,2=> 992,3=> 2047,4=> 41).
Ale nie wiem jak to ugryzc, nei mam pola do ktorego moglbym porownac.
nospor
21.11.2008, 10:44:36
no to wlasnie tym polem jest twoje id. PRzeciez ja tam pisalem ogólnie....
quality
21.11.2008, 11:09:35
No faktycznie fajnie poszlo, ciekawa sprawa

Pozdrawiam
nevt
21.11.2008, 13:07:26
można też prościej, z samą listą, bez CASE:
SELECT *, FIELD(`id`, 7616, 1168, 992, 2047, 41) AS `pos` FROM `jos_content` HAVING `pos` > 0 ORDER BY `pos`;