Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skomplikowane zapytanie
Kwiatol
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 28.01.2006

Ostrzeżenie: (0%)
-----


Jako, że to mój pierwszy post to na początek się przywitam. Witam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Mam problem, z którym od dłuższego czasu nie mogę sobie poradzić mimo przeglądania forum oraz list dyskusyjnych.

  1. SELECT mecz_statystyki_zaw.zawodnik, zaw.imie, zaw.nazwisko, AVG(mecz_statystyki_zaw.pkt) AS pkt
  2. FROM mecz_statystyki_zaw
  3. INNER JOIN zaw ON mecz_statystyki_zaw.zawodnik=zaw.zawodnik WHERE gral=1 AND rozgrywki_id=1 AND sezon_id=2005 ORDER BY mecz_statystyki_zaw.pkt DESC LIMIT 50


Jak zapewne domyślacie się z kodu, mam bazę zawodników i chcę wyciągnąc listę graczy z najlepszymi średnimi. Zapytanie chodzi "tak sobie" jeżeli użyje klauzuli GROUP BY, ale nie mogę go używać bo nie o takie sortowanie mi chodzi, po drugie, baza wyciąga nie najlepze średnie a po prostu najlepsze jednorazowe wyniki punktowe danego zawodnika.

Chodzi o to by podliczyć wszystkie punkty danego zawodnika z bazy i potem wyciągnąć z tego średnią. Moje zapytanie nie działa w ten sposób po prostu nie umiem robić sumy punktów dla danego gracza, oczywiście można zastosować np. WHERE zawodnik=1 itd., ale wtedy się wyśwetli tylko jeden zawodnik, a ja chcę by było ich więcej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Mam nadzieję, że moje tłumaczenie nie jest zbyt zawiłe. Będę bardzo wdzięczny za wskazówki bo mi już pomysły się skończyły.

Ten post edytował Kwiatol 28.01.2006, 14:36:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


To ja moze wypowiem sie w sprawie tego posta.
@spenalzo Za przeproszeniem, co za pierdoly wypisujesz (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?

Cytat
HAVING tylko filtruje rekordy (przy użyciu podanego wyrażenia) uzyskane przy pomocy WHERE, już po ich pobraniu przez zapytanie - dlatego jest to niewydajne.

NIe prawda having jest warunkiem do agregacji czyli do count, max, sum, min, avg itd.

Cytat
Ale czy count można umieścić w where?

Oczywiscie ze nie.

Cytat
A czemu nie?

Bo to logice zaprzecza. Jak mozesz dac warunek do zbioru rekordow, ktorych jeszcze nie znasz.
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: 7.10.2025 - 21:03