![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
piszę ponieważ nie wiem jak ugryźć ten temat. Otóż mam bazę: id|user|rma|przedmiot|timestamp i do tego wpisy załóżmy: 1|usr1|1|item1|2011-01-01 2|usr3|1|item2|2011-01-01 3|usr2|2|item3|2011-01-02 4|usr1|3|item4|2011-02-01 5|usr2|4|item5|2011-02-02 6|usr3|5|item6|2011-02-03 7|usr1|6|item7|2011-02-03 Problem w tym, że potrzebuję otrzymać listę w takiej kolejności: 7|usr1|6|item7|2011-02-03 3|usr1|3|item3|2011-02-01 1|usr1|1|item1|2011-01-01 6|usr3|4|item6|2011-02-03 2|usr3|1|item2|2011-01-01 4|usr2|4|item4|2011-02-02 2|usr2|2|item2|2011-01-02 Teraz to lepiej zobrazuje ![]() Czyli pierw posortowane datą, ale też w pewien sposób "zgrupowane" polem user. Czy da się to załatwić 1 zapytaniem? Niestety próby z jakimś subquery za bardzo obciążają bazę (kupa tekstu i 10000 rekordów). Potrafiłby ktoś coś doradzić? Z góry dzięki. Ten post edytował Karen 14.07.2011, 13:58:55 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie "zgrupowane polem user" ale też posortowane polem user.
..... order by user desc, date desc -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hej, dzięki za szybką odpowiedź, ale sprawa jest bardziej skomplikowana.
Wynik ma być bardziej w stylu: ORDER BY `timestamp` DESC i dla każdego poszczególnego wyniku (wiersza) dodatkowo powinno być posortowane ORDER BY `user` Czyli innymi słowy dostaję listę z datami, na górze ostatnia data -> sprawdzam nazwę użytkownika i jako podwynik otrzymuję jeszcze listę wszystkich jego przedmiotów ORDER BY `timestamp` lub `id` (na to samo wychodzi) DESC. Edit: Jeśli tylko posortuję "order by user desc, date desc" otrzymam stałą listę użytkowników, tzn ostatni będzie pierwszy itd. a to raczej powinno być uzależnione od kolejność przedmiotów posortowanych datą. Czyli niekoniecznie ostatni użytkownik w bazie będzie pierwszym. Zadanie byłoby dość proste gdyby był podział na 2 tabele, ale niestety tak nie jest, a nie mam na to wpływu. Mam nadzieję, że jest to czytelne ![]() Ten post edytował Karen 14.07.2011, 13:22:53 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Musisz dołączyć do tabeli maksymalne daty każdego usera i to po nich najpierw sortować. Później już normalnie sortujesz to nazwie i czym tam chcesz.
Sprawdź jak wydajność. Jeśli masz indeks na polu user to powinno być ok -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 1 Dołączył: 23.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki, dokładnie o to chodziło.
![]() Wydajność dla moich potrzeb jest wystarczająca - 0,4 - 0,3sek |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 00:03 |