Invalid use of group function??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- -

- -

23/10/2006 11:45:00
Quote Anchor link
Als ik deze query uitvoer geeft hij de error 'Invalid use of group function':

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
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?
 
PHP hulp

PHP hulp

18/11/2024 16:31:47
 
Jan Koehoorn

Jan Koehoorn

23/10/2006 11:48:00
Quote Anchor link
Je mag SUM niet in WHERE gebruiken, omdat het een aggregate functie is. In plaats van WHERE moet je dan HAVING gebruiken.
 
Robert Deiman

Robert Deiman

23/10/2006 11:51:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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?
 
Jan Koehoorn

Jan Koehoorn

23/10/2006 11:51:00
Quote Anchor link
@ Robert: nee, want in een WHERE mag je geen aliassen gebruiken.
 
- -

- -

23/10/2006 11:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
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'
 
Klaasjan Boven

Klaasjan Boven

23/10/2006 11:57:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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?
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Jan Koehoorn

Jan Koehoorn

23/10/2006 11:58:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
- -

- -

23/10/2006 12:00:00
Quote Anchor link
Jep, het werkt =D

Bedankt allemaal!
 
Jan Koehoorn

Jan Koehoorn

23/10/2006 12:02:00
Quote Anchor link
Graag gedaan. Goede topictitel overigens! :-)
 
Klaasjan Boven

Klaasjan Boven

23/10/2006 12:03:00
Quote Anchor link
Mooi
 
- -

- -

23/10/2006 12:04:00
Quote Anchor link
@Jan: Lol =P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.