Ik ben zelf een forum aan het schrijven en ik loop nu al tegen het eerste probleem, ik wil in een query alle categorieën selecteren en ook het aantal topics in die categorie.
Dit is de query die ik nu gebruik:
<?php
$sFora = " SELECT
c.c_id,
c.naam,
COUNT(t.t_id) AS aantaltopics
FROM
cats AS c,
topics AS t
WHERE
t.t_id = c.c_id
;";
?>
De foutmelding die ik krijg:
Error!
Fout: SQL-fout
Query: SELECT c.c_id, c.naam, COUNT(t.t_id) AS aantaltopics FROM cats AS c, topics AS t WHERE t.t_id = c.c_id ;
Errornummer: 1140
Foutmelding: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Ik begrijp hieruit dat ik iets met het GROUP BY element moet doen, maar daar begrijp ik niet heel erg veel van, ik heb hier een tutorial over GROUP BY gelezen maar ik snap het nog steeds niet echt.
Ik heb de query nog iets aangepast, nu zit de naam er ook in ;)
ps. In dit geval is de GROUP BY op de naam dus eigenlijk niet nodig omdat je weet dat de naam uniek is. Maar aangezien je die restrictie niet in je database hebt zitten, moet je hem in je query wel opnemen ;)
SELECT COUNT(*) AS AANTAL FROM PBSPSN
GROUP BY VOORLET
Werkt prima
[edit] ik reageerd op WIllem VP in mijn bovenstaande post[/edit]
Willem vp schreef op 22.01.2007 20:29
KLaasjan schreef :ik weet zeker dat je daarmee moet groeperen op alles wat in de SELECT staat behalve datgene wat je met de agregate?? functie, in dit geval COUNT() opvraagd
.....
Wat je hier zegt, klopt in ieder geval niet. Je mag ook rustig op slechts 1 veld groeperen; de enige voorwaarde is dat dat veld ook voorkomt in de SELECT. Die voorwaarde is er by MySQL niet. Je mag dus rustig iets doen als: