Chciałem wyciągnąć z bazy średnie zdobycze punktowe zawodników (raz występuje jako gość raz jako gospodarz). Zrobiłem to tak

  1. // najwieksze srednie zdobycze punktowe
  2. $sql = 'SELECT td1.HostID, td1.HostName, AVG( td1.HostPoints ) AS AHP, AVG( td2.GuestPoints ) AS AGP, ( ( SUM( td1.HostPoints ) + SUM( td2.GuestPoints ) ) / ( Count( td1.HostID ) + Count( td2.GuestID ) ) ) AS Srednia'
  3. . '
  4. FROM tournamentsdata AS td1'
  5. . ' LEFT JOIN tournamentsdata AS td2 ON td1.HostID = td2.GuestID'
  6. . ' GROUP BY td1.HostID'
  7. . ' ORDER BY Srednia DESC '
  8. . ' LIMIT 15 ';
  9. $res_big_sr = mysql_query($sql, $link);


ale czasami średnia dla danej osoby ogólnie jest niższa od średniej jako gospodarz i jako gość. Np jako Gospodarz 370pkt, jako Gość 380 pkt, ogólna średnia 350pkt, więc coś tutja w zapytaniu jest nie tak, ale co?

EDIT:
Już poprawiłem i u góry znajduje się poprawiona wersja - okazało się, że przez moją nieuwagę odjąłem od siebie nie to co trzeba - teraz liczy już ok.

Inne pytanko - czy da sie to zrobić mniej skomplikowanie bz JOIN LEFT? Ma kto jaki pomysł?