Als ik deze query uitvoer geeft hij de error 'Invalid use of group function':

SELECT
	u.id
FROM
	spellog u,
	islands i
WHERE
	(SUM(i.number) * 1000000 + u.punten) > 1004000
AND
	u.active = 'y'
AND
	u.id = i.pid
GROUP BY
	u.id


Het rare is, dat als ik de GROUP BY eruit laat, hij die error nog steeds geeft.

Dit zijn de structuren van mijn databases:

spellog
id (id van de speler)
punten (aantal punten)
active ('y' of 'n')

islands
id (id van het eiland)
number (hoeveelste eiland van die persoon)
pid (id van de speler)

Iemand enig idee waar het aan ligt?
Je mag SUM niet in WHERE gebruiken, omdat het een aggregate functie is. In plaats van WHERE moet je dan HAVING gebruiken.

SELECT
    u.id
    (SUM(i.number) * 1000000 + u.punten) AS totaal
FROM
    spellog u,
    islands i
WHERE
    totaal > 1004000
AND
    u.active = 'y'
AND
    u.id = i.pid
GROUP BY
    u.id


Werkt dit niet?
@ Robert: nee, want in een WHERE mag je geen aliassen gebruiken.

SELECT
	u.id
FROM
	spellog u,
	islands i
WHERE
	u.active = 'y'
AND
	u.id = i.pid
GROUP BY
	u.id
HAVING
	(SUM(i.number) * 1000000 + u.punten) > 1004000


Zo? Dit werkt nog steeds niet:

Unknown column 'u.punten' in 'having clause'

SELECT
    u.id,
   (SUM(i.number) * 1000000 + u.punten) AS totaal
FROM
    spellog u,
    islands i
WHERE
    u.active = 'y'
AND
    u.id = i.pid
GROUP BY
    u.id,
    totaal
HAVING 
   totaal > 1004000


zo toch?
Je volgorde klopt niet. Ik zal even voor je kijken, maar om hem te testen moet ik even je tabellen kopieren. Momentje.
[edit]
probeer eerst even die van Klaasjan uit, die ziet er al beter uit.
[/edit]
Jep, het werkt =D

Bedankt allemaal!
Graag gedaan. Goede topictitel overigens! :-)
@Jan: Lol =P

Reageren