Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] Sortowanie po dacie rosnąco i malejąco
wiliams
post 3.09.2014, 21:25:34
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.01.2010

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


Potrzebuję posortować wydarzenia z tabeli events tak aby, jako pierwsze pojawiły się nadchodzące wydarzenia w kolejności od najbliższego do najdalszego w czasie, a następnie przeszłe wydarzenia w kolejności malejącej:

06/09/14
07/09/14
08/09/14
02/09/14 <--pierwsze zakończone wydarzenie
01/09/14
31/08/14

Próbowałem na dwa sposoby

1)

  1. SELECT * FROM events ORDER BY CASE WHEN date_end >= CURDATE() THEN date_end END ASC, CASE WHEN date_end < CURDATE() THEN date_end END DESC


Ten dobrze sortuje, ale najpierw zwraca stare wydarzenia, a później aktualne. A ja chcę odwrotnie

2)

  1. SELECT * FROM events ORDER BY CASE WHEN date_end > NOW() THEN 1 WHEN date_end < NOW() THEN 2 END ASC, date_end ASC


To zapytanie z kolei dobrze ustawia kolejność, są najpierw nowe wydarzenia, potem stare. Ale oba rodzaje sortują się rosnąco, a stare mają się sortować malejąco

Ten post edytował wiliams 3.09.2014, 21:26:44
Go to the top of the page
+Quote Post
mmmmmmm
post 3.09.2014, 21:56:32
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


order by case when date_end>now() then 0 else 1 end asc , abs(datediff(now(), date_end))
Go to the top of the page
+Quote Post
wiliams
post 5.09.2014, 09:53:39
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.01.2010

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


Dziękuje pięknie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 05:55