Door
Jan Horden
op 30-01-2012 19:58
gewijzigd op 30-01-2012 20:02
2.124 views
Hey ik zit met het volgende probleem:
Ik wil in een tabel het aantal reacties weergeven + de laatste reactie uit de tabel 'reacties'. Dit is natuurlijk niet zo'n probleem alleen wil ik ook het onderwerp uit de tabel 'onderwerp' weergeven. Mijn query ziet er nu als volgt uit:
SELECT onderwerp.id, onderwerp.onderwerp, COUNT( reactie.id ) AS aantal, reactie.auteur AS re_auteur
FROM onderwerp, reactie
WHERE onderwerp.id = reactie.ond_id
AND reactie.id IN (SELECT MAX(id) FROM reactie WHERE ond_id = 3)
GROUP BY onderwerp.id
ORDER BY onderwerp.id DESC
Het probleem zit hem nu in het feit dat door de AND statement waar de laatste reactie wordt opgevraagd er altijd maar 1 resultaat wordt weergegeven en de COUNT(reactie.id) dus ook altijd 1 opleverd. Ik wil echter alle reacties uit de tabel hebben.
Is dit te realiseren in 1 query en hoe?
Zo niet hoe zorg ik dan dat het resultaat toch in 1 tabel wordt weergegeven m.b.v. een while($rij = mysql_fetch_array($result)) lus?
De query zal een error geven maar die zie je waarschijnlijk niet. Je group by clausule is niet compleet.
[edit]Cause: The GROUP BY clause does not contain all the expressions in the SELECT clause. SELECT expressions that are not included in a group function, such as AVG, COUNT, MAX, MIN, SUM, STDDEV, or VARIANCE, must be listed in the GROUP BY clause.
Action: Include in the GROUP BY clause all SELECT expressions that are not group function arguments.
1 tabel ervan maken is nu niet echt een goede vorm van normaliseren als je het mij vraagt omdat dan bij elke reactie het onderwerp erbij staat + de rest van de data die in die tabel staat.
@Aad B: Waarom is mijn group by clausule niet compleet? Wat mist er?
Het probleem zit hem nu in het feit dat door de AND statement waar de laatste reactie wordt opgevraagd er altijd maar 1 resultaat wordt weergegeven en de COUNT(reactie.id) dus ook altijd 1 opleverd. Ik wil echter alle reacties uit de tabel hebben.
Ja dat zeg ik... daardoor levert die COUNT dus ook altijd 1 als resultaat op. Hoe krijg ik toch alle reacties in deze query te zien + de laatste reactie of is dit niet mogelijk?