mysql AVG Problem

Sundermeier

Grünschnabel
Hallo, Ich versuche eine Statistik für meinen Verein zu erstellen. Das ist die Abfrage:
PHP:
SELECT
              spiel_saison, spieler_id, spieler_name, verein_id, verein_name,
              sum( if( ereignis_typ = '1', 1, 0 ) ) AS tore,

              avg( if( ereignis_typ = '1', 1, 0 ) ) AS tore_schnitt,

              sum( if( ereignis_typ = '2', 1, 0 ) ) AS gelb,
              sum( if( ereignis_typ = '3', 1, 0 ) ) AS gelb_rot,
              sum( if( ereignis_typ = '4', 1, 0 ) ) AS rot,
              sum( if( ereignis_typ = '5', 1, 0 ) ) AS vorlage
              FROM fussball_spiel
              INNER JOIN fussball_ereignis ON ( ereignis_spiel = spiel_id )
              INNER JOIN fussball_spieler ON ( spieler_id = ereignis_spieler )
              INNER JOIN fussball_kader ON ( spieler_id = kader_spieler )
              INNER JOIN fussball_verein ON ( kader_verein = verein_id )
              WHERE spiel_saison = ".$_SESSION['saison_id']."
              GROUP BY ereignis_spieler
              HAVING ".$_GET['order']." > 0
              ORDER BY ".$_GET['order']." desc
Die Verschiedenen Ereignisse werden in der Tabelle fussball_ereignis gespeichert.
Sie unterscheiden sich im ereignis_typ.
Der "tore_schnitt" stimmt nicht, wenn jemand etwas anderes als ein Tor gemacht hat.
Gibt es eine Möglichkeit das zu korrigieren?
 
item: Zerleg mal dein SQL in Sinnvolle Subqueries und teste dieses

SQL:
-- Ereignisse pro Spieler
SELECT
	e.ereignis_spieler						AS spieler_id,
	SUM(IF(e.ereignis_typ = '1', 1, 0 ))	AS tore,
	AVG(IF(e.ereignis_typ = '1', 1, 0 ))	AS tore_schnitt,
	SUM(IF(e.ereignis_typ = '2', 1, 0 ))	AS gelb,
	SUM(IF(e.ereignis_typ = '3', 1, 0 ))	AS gelb_rot,
	SUM(IF(e.ereignis_typ = '4', 1, 0 ))	AS rot,
	SUM(IF(e.ereignis_typ = '5', 1, 0 ))	AS vorlage
FROM
	fussball_ereignis 						AS e,
	INNER JOIN fussball_spiel				AS s
		ON e.ereignis_spiel = s.spiel_id
WHERE
	s.spiel_saison = {$_SESSION['saison_id']}
GROUP BY
	ereignis_spieler


item: PHP MySQL Debug Queries
 
Zuletzt bearbeitet von einem Moderator:
Zurück