Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Sortowanie według dwóch pól
arkos
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 24.12.2009

Ostrzeżenie: (20%)
X----


W jaki sposób mogę posortować sobie rekordy według dwóch kolumn?
Chodzi mi, aby sortowało na początku według jednej, a później posortowało według drugiej.

Mam taką tabelę:
Cytat
| data_dodania | id |
| 27.11.2011 18:03 | 1 |
| 27.11.2011 19:08 | 2 |

Ustawiałem w taki sposób:
  1. SELECT * FROM `tabela` ORDER BY data_dodania, id DESC

Powinno wyświetlić rekord ten o ID 2 jako pierwszy, a wyświetla jako drugi.

Co robię źle, w jaki sposób mogę uzyskać poprawny rezultat?

Chciałbym uzyskać mając, np. takie wartości:
  1. | data_dodania | id |
  2. | 13.09.2011 14:41 | 3 |
  3. | 21.12.2012 05:04 | 4 |
  4. | 27.11.2011 18:00 | 1 |
  5. | 20.04.2011 17:55 | 4 |
  6. | 11.11.2011 02:29 | 5 |
  7. | 17.07.2012 10:03 | 2 |
  8. | 25.12.2011 11:39 | 2 |
  9. | 03.01.2012 08:18 | 1 |
  10. | 25.04.2012 23:59 | 3 |

Rezultat chciałbym taki:
Cytat
| data_dodania | id |
| 21.12.2012 05:04 | 4 |
| 25.04.2012 23:59 | 3 |
| 17.07.2012 10:03 | 2 |
| 03.01.2012 08:18 | 1 |
| 11.11.2011 02:29 | 5 |
| 20.04.2011 17:55 | 4 |
| 13.09.2011 14:41 | 3 |
| 25.12.2011 11:39 | 2 |
| 27.11.2011 18:00 | 1 |

Z góry dziękuję za odpowiedzi (IMG:style_emoticons/default/smile.gif)
Pozdrawiam!

Ten post edytował arkos 27.11.2011, 19:57:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
arkos
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 24.12.2009

Ostrzeżenie: (20%)
X----


Nie działają Wasze rozwiązania. Udowodnienie:
  1. CREATE TABLE IF NOT EXISTS `tabela` (
  2. `id` int(11) NOT NULL,
  3. `date_create` datetime NOT NULL
  4. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  5.  
  6. INSERT INTO `tabela` (`id`, `date_create`) VALUES
  7. (3, '2011-09-13 14:41:00'),
  8. (4, '2012-12-21 05:04:00'),
  9. (1, '2011-11-27 18:00:00'),
  10. (4, '2011-04-20 17:55:00'),
  11. (5, '2011-11-11 02:29:00'),
  12. (2, '2012-07-17 10:03:00'),
  13. (2, '2011-12-25 11:39:00'),
  14. (1, '2012-01-03 08:18:00'),
  15. (3, '2012-04-25 23:59:00');


Zapytanie:
  1. SELECT * FROM `tabela` ORDER BY `date_create` DESC, `id` DESC


Wynik:
Cytat
| id | date_create |
| 4 | 2012-12-21 05:04:00 |
| 2 | 2012-07-17 10:03:00 |
| 3 | 2012-04-25 23:59:00 |
| 1 | 2012-01-03 08:18:00 |
| 2 | 2011-12-25 11:39:00 |
| 1 | 2011-11-27 18:00:00 |
| 5 | 2011-11-11 02:29:00 |
| 3 | 2011-09-13 14:41:00 |
| 4 | 2011-04-20 17:55:00 |


Wynik jaki powinien być:
Cytat
| id | date_create |
| 4 | 21.12.2012 05:04:00 |
| 3 | 25.04.2012 23:59:00 |
| 2 | 17.07.2012 10:03:00 |
| 1 | 03.01.2012 08:18:00 |
| 5 | 11.11.2011 02:29:00 |
| 4 | 20.04.2011 17:55:00 |
| 3 | 13.09.2011 14:41:00 |
| 2 | 25.12.2011 11:39:00 |
| 1 | 27.11.2011 18:00:00 |


Ten post edytował arkos 28.11.2011, 14:42:07
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: 26.12.2025 - 16:24