Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie zapytania z WHERE IN
quality
post
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




nie da sie tego od tak zrobic. musisz napisac wlasną regulke na sortowanie:
http://nospor.pl/mysql-faq-n25.html#faq-5
Go to the top of the page
+Quote Post
quality
post
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




no to wlasnie tym polem jest twoje id. PRzeciez ja tam pisalem ogólnie....
Go to the top of the page
+Quote Post
quality
post
Post #5





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No faktycznie fajnie poszlo, ciekawa sprawa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam
Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


można też prościej, z samą listą, bez CASE:
  1. SELECT *, FIELD(`id`, 7616, 1168, 992, 2047, 41) AS `pos` FROM `jos_content` HAVING `pos` > 0 ORDER BY `pos`;
Go to the top of the page
+Quote Post

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: 20.12.2025 - 18:05