Problem z sortowaniem po grupowaniu |
Problem z sortowaniem po grupowaniu |
15.09.2008, 08:33:29
Post
#1
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Witam,
mam pewien problem. Mam tabelę, w której przechowuję wyniki użytkowników w danej grze. Struktura tabeli to: Kod id, user_id, game_id, wynik, data Każdy gracz do każdej gry może mieć kilka rekordów. Chciałbym teraz pobrać listę 10 najlepszych graczy sortując ich najpierw po zdobytych punktach malejąco, a następnie (i tu problem) po dacie uzyskania punktów rosnąco. W wyniku mam takie zapytanie:
Problem jednak w tym, że nie wiem w jaki sposób wyciągnąć datę uzyskania danego wyniku (po której ma nastąpić sortowanie). Aktualnie wybierana jest data uzyskania pierwszego wyniku w ogóle danego użytkownika dla danej gry. Może podam przykładowe dane wyjściowe: http://images32.fotosik.pl/361/a764f8be52aab7f9.png Proszę zwrócić uwagę na użytkowników, którzy zdobyli po 450 pkt oraz daty, jakie widnieją przy wynikach (są niepoprawne). Dane zawarte w bazie dla tych dwóch użytkowników dla danej gry (posortowane po punktach i dacie) to: http://images38.fotosik.pl/10/fa82770aa2b9abad.png Widać wyraźnie, że w zapytaniu, o które mi chodzi brana jest pod uwagę pierwsza wpisana data, a nie ta, kiedy zostały zdobyte punkty. Proszę o pomoc, pion |
|
|
15.09.2008, 12:33:22
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) |
A w podzapytaniu wyciągasz dane z tabel sortując je po wyniku malejąco. EDIT Pisane z palca, nie mam teraz możliwości sprawdzenia czy to działa Ten post edytował Kicok 15.09.2008, 12:51:33 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
15.09.2008, 13:01:07
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Chciałem zrobić w podobny sposób wyciągając datę w podzapytaniu na podstawie id użytkownika oraz wybranej liczby punktów ale nie mogę użyć aliasu score w podzapytaniu. Również nie mogę użyć id wyniku, gdyż jest on (jak i data) pierwszy z brzegu.
|
|
|
15.09.2008, 13:16:24
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) |
Ze swojego zapytania ( które masz w 1 poście ) wywal GROUP BY, LIMIT i zamień MAX( `wynik` ) na `wynik`. To jest teraz twoje ##PODZAPYTANIE##, które wykonuje wszystko oprócz grupowania, więc wstawiasz je do zapytania zewnętrznego tak jak pokazałem i powinieneś otrzymać pczekiwane wyniki.
Zauważ, że nie chodzi mi o: SELECT ( ##PODZAPYTANIE ## ) FROM tabela tylko o: SELECT * FROM ( ##PODZAPYTANIE ## ) t -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
15.09.2008, 13:47:10
Post
#5
|
|
Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza |
Działa świetnie! Dzięki serdeczne za pomoc
Finalnie mam takie zapytanie:
Ten post edytował phpion 15.09.2008, 13:48:05 |
|
|
Wersja Lo-Fi | Aktualny czas: 3.06.2024 - 11:28 |