Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Obliczanie liczby meczów w których grał gracz
Forum PHP.pl > Forum > Przedszkole
pawel.ad
Witam.
Mam zapytanie:
  1. # Wydobywamy liderów najmniejszej skuteczności z rzutów wolnych.
  2. SELECT
  3. `players`.`id` AS p_id,
  4. `players`.`name` AS p_name,
  5. `players`.`lastname` AS p_lastname,
  6. `teams`.`id` AS t_id,
  7. `teams`.`name` AS t_name,
  8. count(*) AS num_games,
  9. SUM(`game_scores`.`FTM`) AS sum_FTM,
  10. SUM(`game_scores`.`FTA`) AS sum_FTA,
  11. ((SUM(`game_scores`.`FTM`))/(SUM(`game_scores`.`FTA`))) AS prc_FT
  12. FROM `game_scores`
  13. INNER JOIN `players` ON `players`.`id` = `game_scores`.`player_id`
  14. INNER JOIN `teams` ON `players`.`team_id` = `teams`.`id`
  15. WHERE `game_scores`.`FTA` > 0
  16. GROUP BY `players`.`id`
  17. ORDER BY prc_FT ASC, sum_FTA DESC, p_id ASC
  18. LIMIT 5


I wszystko elegancko działa, ale num_games liczy tylko mecze w których dany zawodnik miał FTA > 0. Chce natomiast żeby liczyło to wszystkie mecze w których grał.
"WHERE `game_scores`.`FTA` > 0 " jest po to żeby nie wyświetlało zawodników którzy mają 0-0 (0%).

"WHERE SUM(`game_scores`.`FTA`) > 0" niestety nie działa

Ma ktoś jakiś pomysł jak to obejść?
skowron-line
Sprawdź funkcję HAVING.
pawel.ad
Dziękuje bardzo. Pomogło smile.gif

Dla zainteresowanych kod:
  1. # Wydobywamy liderów najmniejszej skuteczności z rzutów wolnych.
  2. SELECT
  3. `players`.`id` AS p_id,
  4. `players`.`name` AS p_name,
  5. `players`.`lastname` AS p_lastname,
  6. `teams`.`id` AS t_id,
  7. `teams`.`name` AS t_name,
  8. count(*) AS num_games,
  9. SUM(`game_scores`.`FTM`) AS sum_FTM,
  10. SUM(`game_scores`.`FTA`) AS sum_FTA,
  11. ((SUM(`game_scores`.`FTM`))/(SUM(`game_scores`.`FTA`))) AS prc_FT
  12. FROM `game_scores`
  13. INNER JOIN `players` ON `players`.`id` = `game_scores`.`player_id`
  14. INNER JOIN `teams` ON `players`.`team_id` = `teams`.`id`
  15. GROUP BY `players`.`id`
  16. HAVING sum_FTA > 0
  17. ORDER BY prc_FT ASC, sum_FTA DESC, p_id ASC
  18. LIMIT 5
  19.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.