Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Jak z danych tabeli zrobic ranking
--jymbox--
post
Post #1





Goście







Najlepiej wydaje mi sie ze opisze to na przykladzie:

tabela wynikow na Wielkiej Krokwi

id nazwa metrow rok
1 Czesiek 125 2001
2 Wiesiek 132 2001
3 Stefek 140 2001
4 Czesiek 143.5 2002
5 Wiesiek 124 2002
6 Stefek 115 2002
7 Czesiek 129 2003
8 Wiesiek 137 2003
9 Stefek 120 2003
itd.

i teraz tak... kolejonosc w danym roku to nie problem radze sobie ale zeby zrobic taki ranking wszechczasow na Wielkiej Krokwi to juz mi stwarza problem probowalem ze naprawde wielu rzeczy i distinct i group by i tabele pomocnicze i nigdy nie udalo mi sie otrzymac poprawnych danych np. dla tabeli powyzej dane powinny wygladac tak:

miejsce id nazwa metrow rok
1 4 Czesiek 143.5 2002
2 3 Stefek 140 2001
3 8 Wiesiek 137 2003

tylko wlasnie o to mi chodzi zeby raz pokazywalo danego zawodnika i tylko z jego najlepszym wynikiem oczywiscie niestety mi nie udawalo sie wyciagnac tych danych tak zeby grupowalo z najepszym wynikiem tylko zawsze z najgorszym badz z pierwszym juz nie pamietam ponizej podam link do starego mojego tematu

problem z zapytaniem mysql

z gory dzieki za kazda pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jak wspomniał binbash... Jest to zapytanie skorelowane a więc niezbyt wydajne.
  1. SELECT t1.id, t1.nazwa, t1.metrow, t1.rok FROM tabela AS t1
  2. WHERE t1.metrow = ( SELECT MAX(t2.metrow) FROM tabela AS t2 WHERE t1.nazwa = t2.nazwa ) ORDER BY t1.metrow DESC;

vs moje na szybko napisane:
  1. SELECT * FROM ( SELECT * FROM tabela ORDER BY metrow DESC ) GROUP BY nazwa

binbash: 0.0016s
moje: 0.0009s

Problemem jest jednak co innego... Wielokrotne odwołania do obu zapytań (nieważne czy moja czy binbasha wersja) sprawią, że tak naprawdę różnica między nimi będzie niej ważna, gdyż kilkukrotne odwołanie sprawia, że oba schodzą z wynikami do około 0.0005-0.0007s i tutaj powinieneś poznać magiczny zwrot: cache'owanie wyników (IMG:style_emoticons/default/smile.gif)
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:01