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 Cytat 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 Dnia 11/10/2010 o 17:40, maminowiec napisał: 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 Cytat 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