vsx 0 Zgłoś post Napisano Listopad 10, 2010 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
maminowiec 9 Zgłoś post Napisano Listopad 10, 2010 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
vsx 0 Zgłoś post Napisano Listopad 10, 2010 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
maminowiec 9 Zgłoś post Napisano Listopad 10, 2010 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