Hallo,

Ik heb een werkende query namelijk:


SELECT
			lid.voornaam,
			lid.achternaam,
			lid.teams,
			lid.id,
			COUNT(g.leden_id) aantal_goals
		FROM
	    		(SELECT
				l.id,
				l.voornaam,
				l.achternaam,
				t.team AS teams
			FROM
				Leden AS l
			JOIN
				Teamindeling AS ti
			ON 
				(l.id = ti.leden_id)
			JOIN
				Teams AS t
			ON 
				(t.id = ti.team_id)
			WHERE 
				ti.taak = 'Speler' 
			AND 
				ti.seizoen = '2013/2014'
			AND
				t.leeftijd = 'Junioren'
			GROUP BY 
				l.id, 
				l.voornaam, 
				l.achternaam
	    		) AS lid
		LEFT JOIN 
			Goals AS g
		ON
	    		(lid.id = g.leden_id) AND g.seizoen = '". $seizoen. "' AND g.wie LIKE 'ZSC%'
		LEFT JOIN
			Wedstrijden AS w
		ON
				(g.wedstrijd_id = w.id) 
		WHERE 
			w.soort = 'Competitie'
		GROUP BY
			lid.voornaam, 
			lid.achternaam, 
			lid.teams 
		ORDER BY
			lid.teams,
			aantal_goals DESC


Nu telt deze query per team uit hoeveel goals een persoon gemaakt heeft (ook als deze goals heeft gemaakt in een ander team telt hij deze mee)

Wat ik nu graag zou willen is dat hij per persoon uittelt hoe vaak hij per team gescoord heeft.

Dus wat ik nu krijg:

Jantje - 3 goals A1 (1x in A1 , 2x in B1)
Pietje - 3 goals A1 (3x in A1)
----------
Klaasje - 1 goal B1

Wat ik dus zou willen:

Pietje - 3 goals A1
Jantje - 1 goal A1
----------
Jantje - 2 goals B1
Klaasje - 1 goal B1

Hoe kan ik deze query aanpassen dat hij dus de goals per persoon per team telt.
Ik heb zelf al vanalles geprobeerd maar zie het helaas niet meer.

Hoop dat het een beetje duidelijk is.

Alvast bedankt!

SELECT
	t.team,
	l.voornaam,
	l.achternaam,
	COUNT(g.leden_d) AS aantal_goals
FROM
	teams t
JOIN
	team_indeling ti
	ON t.id = team_id
JOIN
	leden l
	ON ti.leden_id = l.id
LEFT JOIN
	goals g
	ON l.id = g.leden_id AND g.seizoen = '2013/2014' AND g.wie LIKE 'ZSC%'
LEFT JOIN
	wedstrijden w
	ON g.wedstrijd_id = w.id AND w.soort = 'Competitie'
WHERE
	ti.taak = 'Speler'
	AND ti.seizoen = '2013/2014'
	AND t.leeftijd = 'Junioren'
GROUP BY
	t.team,
	l.voornaam,
	l.achternaam
ORDER BY
	t.team, aantal_goals DESC

Hallo Ger,

Bedankt alvast voor het meedenken. Helaas werkt het nog niet helemaal.

Voorbeeld: http://www.zscwesterhoven.nl/test.php?o=1

Ik zal proberen mijn databasestructuur nog wat verder uit te leggen, dan komen we er hopelijk wel uit.

Leden -
id 1
voornaam Jan
achternaam Test

Wedstrijden
id 1
team_1 ZSC C1
team_2 TEST C1
soort Competitie
competitie ZSC C1
seizoen 2013/2014

Goals
id 1
wedstrijd_id 1
leden_id 1
wie ZSC C1
minuut 10
seizoen 2013/2014

Teams
id 1
team ZSC C1
volgorde 2
seizoen 2013/2014
leeftijd Junioren

Teamindeling
id 1
team_id 1
leden_id 1
taak Speler
seizoen 2013/2014

Query:

	$query = "
		SELECT
			t.team,
			l.voornaam,
			l.achternaam,
			COUNT(g.leden_id) AS aantal_goals
		FROM
			Teams t
		JOIN
			Teamindeling ti
		ON 
			t.id = team_id
		JOIN
			Leden l
		ON 
			ti.leden_id = l.id
		LEFT JOIN
			Goals g
		ON
			l.id = g.leden_id AND g.seizoen = '". $seizoen. "' AND g.wie LIKE 'ZSC%'
		LEFT JOIN
			Wedstrijden w
		ON
			g.wedstrijd_id = w.id AND w.soort = 'Competitie'
		WHERE
			ti.taak = 'Speler'
		AND
			ti.seizoen = '". $seizoen. "'
		AND
			t.leeftijd = 'Junioren'
		GROUP BY
			t.team,
			l.voornaam,
			l.achternaam
		ORDER BY
			t.team,
			aantal_goals DESC 
	";



Toevoeging op 16/05/2014 17:14:23:

De bovenste persoon van de B1 bijvoorbeeld had in de B1 9 doelpunten moeten hebben, en hoort ook in het rijtje A1 thuis, met 2 doelpunten.

Hier nog een plaatje als ik in kolom Goals kijk voor deze persoon:

http://www.zscwesterhoven.nl/uitlegplaatje.jpg
Dat het aantal doelpunten niet klopt, kan ik wel thuisbrengen, maar dat maar iemand maar bij één team wordt weergegeven niet.
In ieder geval moet je bij de join van de goals LIKE 'ZSC%' veranderen in g.wie = t.team

Hallo Ger,

Allereerst weer bedankt voor je hulp. Nu ik dit veranderd heb kloppen het aantal goals wel. Helaas zie ik de namen nog steeds maar bij 1 team, wat kan ik je nog aan extra info@ geven zodat we ook daar uit kunnen komen?

Als laatste nog: Er bestaat bij die Goals tabel ook een leden_id 0, dit is een eigen doelpunt, omdat er geen Lid 0 bestaat komen deze volgens mij dus ook niet in de lijst. Is het mogelijk om daar toch Eigen goals - Aantal te krijgen?

Groetjes!

Toevoeging op 17/05/2014 09:06:49:

Kan het misschien zo zijn dat hij de speler niet bij de andere teams laat zien omdat de speler niet in de teamindeling van dat elftal staat?
Als een speler niet bij de teamindeling van een team staat wordt die niet meegenomen in deze query.

Als het goed is in deze wel:

SELECT
	t.team,
	l.voornaam,
	l.achternaam,
	COUNT(g.leden_id) AS aantal_goals
FROM
	teams t
JOIN
	(SELECT
		team_id,
		leden_id,
	FROM
		team_indeling
	WHERE 
		seizoen = '2013/2014'
		AND
		taak = 'Speler'
	UNION
		SELECT DISTINCT
			tt.team_id
			go.leden_id
		FROM
			goals go
		JOIN
			teams tt
			ON go.wie = tt.team
		WHERE
			tt.leeftijd = 'Junioren' AND go.seizoen = '2013/2014'	
	) ti
	ON t.id = ti.team_id
JOIN
	leden l
	ON ti.leden_id = l.id AND 
LEFT JOIN
	goals g
	ON l.id = g.leden_id AND g.seizoen = '2013/2014' AND g.wie = t.team
LEFT JOIN
	wedstrijden w
	ON g.wedstrijd_id = w.id AND w.soort = 'Competitie'
WHERE
	t.leeftijd = 'Junioren'
GROUP BY
	t.team,
	l.voornaam,
	l.achternaam
ORDER BY
	t.team, aantal_goals DESC

Ik ga maandag even kijken of dit werkt.

Nu een weekendje weg.

Bedankt iniedergeval!
>> Ik ga maandag even kijken of dit werkt

D B in PM

Ik heb deze namelijk van het weekend nodig voor onze jaarlijkse afsluiting. (Wil geen druk bij je neerleggen hoor)


Foei!! :-P
De oplossing in je vorige post was genoeg voor dit weekend omdat ze op de club alleen de topscoorders van junioren (1x) en pupillen (1x) nodig hadden om de wisselbeker te laten maken. Volgend weekend word er van elk team de top 3 opgenoemd en dat ligt allemaal korter bij elkaar dus dan heb ik de nog gespecificeerdere oplossing nodig.

Zodoende. Maandag ga ik dus zelf ook meteen weer aan de slag.
Hallo,

Daar ben ik weer.

Ik heb nu de query van je gebruikt Ger, maar tt.team_id bestaat niet dus daar kan hij niets mee. Ik snap helaas zelf niet wat de query precies doet met die UNION enzo, dus weet niet zo goed wat ik nu kan wijzigen. Kan ik op een makkelijke manier mijn database opbouw laten zien zodat je er misschien meer wijs uit kunt?

Groeten,

Danny


	SELECT
	    t.team,
	    l.voornaam,
	    l.achternaam,
	    COUNT(g.leden_id) AS aantal_goals
	FROM
	    Teams t
	JOIN
	    (SELECT
	        team_id,
	        leden_id
	    FROM
	        Teamindeling
	    WHERE 
	        seizoen = '2013/2014'
	        AND
	        taak = 'Speler'
	    UNION
	        SELECT DISTINCT
	            tt.team_id,
	            go.leden_id
	        FROM
	            Goals go
	        JOIN
	            Teams tt
	            ON go.wie = tt.team
	        WHERE
	            tt.leeftijd = 'Junioren' AND go.seizoen = '2013/2014'    
	    ) ti
	    ON t.id = ti.team_id
	JOIN
	    Leden l
	    ON ti.leden_id = l.id 
	LEFT JOIN
	    Goals g
	    ON l.id = g.leden_id AND g.seizoen = '2013/2014' AND g.wie = t.team
	LEFT JOIN
	    Wedstrijden w
	    ON g.wedstrijd_id = w.id AND w.soort = 'Competitie'
	WHERE
	    t.leeftijd = 'Junioren'
	GROUP BY
	    t.team,
	    l.voornaam,
	    l.achternaam
	ORDER BY
	    t.team,
	    aantal_goals DESC

Reageren