Skocz do zawartości
Zaloguj się, aby obserwować  
vsx

Zapytanie SQL

Polecane posty

Witam.

 

Glowie sie juz drugi dzien nad napisaniem zapytania, ktore zwrociloby mi zadane wartosci.

 

Mam 2 tabele:

 

ps_plr_ids_name - zawierajaca pola playerid, name i totaluses 

 

ps_plr zawierajaca ranking oraz playerid

 

 

 

 

Chcialbym by zapytanie zwracalo wartosc  rank oraz name - wedlug miejsca w rankingu.

 

Problem jest o tyle zlozony, ze tabela ps_plr_ids_name zawiera wszystkie uzywane przez graczy nazwy, przykladowo uzytkownik z rankingiem #1 gral na 5ciu nickach - chce wybrac ten, ktory byl uzywany najczesciej na podstawie totaluses (pole zawiera liczbe ile razy gracz uzywal tego nicka).

 

Mam nadzieje, ze napisalem w miare jasno.

 

Z gory dziekuje bardzo za pomoc.

 

Pozdrawiam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

nie wiem czy Cie dobrze zrozumiałem

 

ale wymyśliłem coś takiego

 

 

SELECT a.* , b.* , avg( b.rank ) AS srednia , COUNT( a.totaluses ) AS ile

FROM ps_plr_ids_name a

JOIN ps_plr b ON a.playerid = b.playerid

GROUP BY a.playerid

ORDER BY srednia DESC ,ile DESC

 

nazwy tabel sprawdź czy dobrze napisałem

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

nie wiem czy Cie dobrze zrozumiałem

 

ale wymyśliłem coś takiego

 

 

 

 

nazwy tabel sprawdź czy dobrze napisałem

 

tak!

 

jestem naprawde bardzo wdzieczny.

 

swoja droga czy duzym nietaktem z mojej strony byloby, jakbys mnie nieco oprowadzil po tym rozwiazaniu?

 

Jakkolwiek - bardzo Ci dziekuje.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Opiszę CI mniej więcej jak to działa

 

1. SELECT a.* , b.* , avg( b.rank ) AS srednia , COUNT( a.totaluses ) AS ile

2. FROM ps_plr_ids_name a

3. JOIN ps_plr b ON a.playerid = b.playerid

4. GROUP BY a.playerid

5. ORDER BY srednia DESC ,ile DESC

 

1. Wybieramy interesujące nas pola , ja wybrałem wszystkie bo nie miałem pełnej struktury Twojej bazy. Dla większej optymalizacji zawsze podawaj te pola które Cie interesują (np a.pole1 , a.pole2 ,b.pole1 ...).

AVG wylicza średnią podanego pola , COUNT zwraca liczbę rekordów

2. to chyba jasne

3. JOIN czyli dołącz tabele , łączymy je według warunku (a = a)

4. grupujemy czyli tak aby nie było powtórzeń

5. sortujemy według sredniej , i ilosci

 

poczytaj sobie o wszystkich funkach i będziesz lepiej wiedział , bo ja nie umiem dobrze tłumaczyć :(

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×