Join en group by
Nu wil ik dat lijstje met de volgende query ophalen:
Code (php)
1
2
3
4
5
2
3
4
5
SELECT g.image, g.name, SUM( u.berichten ) AS berichten, COUNT( u.id ) AS leden
FROM `groups` AS g, `users` AS u
GROUP BY u.`group`
WHERE g.name = u.`group`
ORDER BY SUM(u.berichten) DESC
FROM `groups` AS g, `users` AS u
GROUP BY u.`group`
WHERE g.name = u.`group`
ORDER BY SUM(u.berichten) DESC
Mysql geeft de volgende foutmelding:
Code (php)
1
2
2
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE g.name = u.`group`
ORDER BY SUM( u.berichten) DESC' at line 4
ORDER BY SUM( u.berichten) DESC' at line 4
Kan iemand mij vertellen wat ik fout doe?
Bedankt,
Stijn
Backtics (`) horen niet in je query thuis! Dat is een MySQL only dingetje, wat overbodig is.
Je hebt de GROUP BY volgens mij op de verkeerde weg staan
Zo dan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
g.image,
g.name,
SUM( u.berichten ) AS tel_berichten,
COUNT( u.id ) AS leden
FROM
groups AS g,
users AS u
WHERE
g.name = u.group
GROUP BY
g.name
ORDER BY
SUM(u.berichten) DESC
g.image,
g.name,
SUM( u.berichten ) AS tel_berichten,
COUNT( u.id ) AS leden
FROM
groups AS g,
users AS u
WHERE
g.name = u.group
GROUP BY
g.name
ORDER BY
SUM(u.berichten) DESC
Ik weet niet zeker (dacht het niet) of die SUM() wel in de ORDER BY kan, probeer het anders evt. nog zo:
Where en GROUP BY moest inderdaad omgedraaid worden dat was alles. Als ik ` niet gebruik dan ziet hij group als onderdeel van GROUP BY.
Noem de kolom gewoon usergroup, dat is ook nog eens meteen duidelijker ;)
Gebruik een echte database of stel MySQL in op STRICT, dan wordt de query direct afgekeurd.
Tip: Zet alle onderdelen in het SELECT-gedeelte ook in de GROUP BY. Dát is hoe je GROUP BY moet gebruiken.