Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]sortowanie po 2kolumnach
fr33d0m
post
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Mam taką tabelę:
  1. id_ogl3 | czas3 | waznosc3
  2. 11 | 2012-07-05 23:59:40 | 7
  3. 12 | 2012-07-06 12:38:34 | 7
  4. 13 | 2012-07-06 21:48:36 | 7
  5. 14 | 2012-07-06 21:54:00 | 7
  6. 19 | 2012-07-14 01:38:27 | 7
  7. 20 | 2012-07-14 10:55:25 | 7
  8. 17 | 2012-07-28 01:38:11 | 21
  9. 15 | 2012-08-03 22:03:06 | 28
  10. 18 | 2012-08-04 01:38:21 | 28

Chcę wyniki posortować, aby na przodzie wyników: `czas3` był aktualny, ale wyświetlał się, względem `waznosc3` według najmniejszej ilości - kolejno: 7/21/28

Wydaję się, banalnie proste prawda? ano nie do końca;/ bo sortowanie po dwóch kolumnach nie działa mimo, że powinno;/
Używam takiego zapytania:
  1. SELECT `id_ogl3` , `czas3` , `waznosc3`
  2. FROM `oglosz3nia3`
  3. ORDER BY czas3 DESC , waznosc3 ASC
  4. LIMIT 0 , 30

Daje ono wyniki w połowie poprawne, bo wyświetla aktualny czas - ale wyświetla `waznosc3` w kolejnosci: 28/21/7 (powinno 7/21/28).
Zmiana sortowania `waznosc3` na DESC, nic nie zmienia - w ogóle SQL nie bierze tego pod uwagę!;/
Męczę się z tym od wczoraj i brak mi pomysłów... co robię źle?

Ps. kolumna `czas3` to timestamp - nie wiem czy to ma znaczenie.

Ten post edytował fr33d0m 7.07.2012, 14:05:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fr33d0m
post
Post #2





Grupa: Zarejestrowani
Postów: 132
Pomógł: 4
Dołączył: 22.10.2010

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


Hmm... (IMG:style_emoticons/default/smile.gif)
  1. SELECT czas3, waznosc3
  2. FROM (
  3. SELECT czas3, waznosc3
  4. FROM oglosz3nia3
  5. ORDER BY waznosc3 ASC
  6. ) AS alias
  7. ORDER BY alias.czas3 DESC


Po wyglądzie można domyślić się, że najpierw sortuje po `waznosc3` i dopiero później po `czas3` - jednak w praktyce pokazuje to samo, co:
  1. SELECT `id_ogl3` , `czas3` , `waznosc3`
  2. FROM `oglosz3nia3`
  3. ORDER BY czas3 DESC
  4. LIMIT 0 , 30

`czas3` od największego(ok) i `waznosc3` w kolejnosci 28/21/7 (potrzebuję 7/21/28)

Więc wygląda na to, że dalej jest coś nie tak... Na pewno takie zgłębienie zapytania jest lepsze od zastosowania daty w INT'cie tak jak to wyżej przedstawiłem. Będę się bawił w testy jeszcze, może coś wyjdzie...

edit
z tego zapytania nic nie wyjdzie, bo przy końcówce zapytania, alias jest sortowany pod DESC, mimo, że wcześniej był sortowany pod ASC (alias.czas3 DESC) - więc w rezultacie zawsze będzie 28/21/7.

Pytanie brzmi, jak najpierw posortować `waznosc3` pod ASC, a później wszystkie posortowane dane pod `waznosc3` posortować raz jeszcze, ale pod `czas3` DESC. ?
I tu z samego pytania wynika, że się NIE DA bo sortowanie dwu-krotne, zawsze będzie wyglądało według ostatniego posortowania. Szkoda...

Ten post edytował fr33d0m 7.07.2012, 12:31:11
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: 8.10.2025 - 01:53