Ik wil graag de volgende query's samenvoegen en ik krijg het niet voor elkaar.

Query 1:
SELECT reactie.* , users.type
FROM reactie, users
WHERE reactie.id = '" .$_GET["id"]. "'
AND reactie.auteur = users.gebruikersnaam
GROUP BY reactie.nr
ORDER BY reactie.nr DESC";

Query 2:
SELECT auteur, COUNT(*)
FROM reactie
GROUP BY auteur

de auteur van de 2de query hoeft niet weergegeven te worden zolang ik maar alle reacties krijg per auteur.
De eerste query laat alle reacties zijn per topic en het type gebruiker. Hier wil ik dus ook graag het aantal reacties van de gebruiker bij hebben staan!
jah per topic maar dat regel ik zelf wel... questie van WHERE reactie.id = '" .$_GET["id"]. "' (onderwerp id dus)
Maar het probleem waar ik mee zit is die GROUP BY. Want zodra ik ga groeperen per posts.id (in jouw model) dan krijg ik dus het aantal reacties per post en niet per gebruiker! Hoe ik dat moet omzeilen weet ik dus niet en daar heb ik je hulp dus voor nodig ;)
GROUP BY posts.id, users.nogwat?
Nee zo simpel is het helaas niet want dan groupeerd hij in eerste instantie nog per posts.id en dan pas per users.gebruikersnaam dacht ik. Iig had ik dat al geprobeerd en dat werkte niet!
En iets als dit:


SELECT r.*, u.type, u.gebruikersnaam, COUNT(u.id) AS aantal
FROM reactie AS r
LEFT JOIN users AS u
 ON (r.auteur = u.gebruikersnaam)
WHERE r.id = ".intval($_GET['id'])."
ORDER BY r.nr DESC


?
dan zit je nog met het GROUP BY probleem eddy. Als ik groepeer op r.id krijg ik alle aantallen op 1 en als ik groepeer op u.id dan krijg ik niet alle reacties te zien. En die GROUP BY is verplicht
Je volledige query nog een keer posten helpt ook...

Je doet een count, maar die kun je natuurlijk ook anders doen.. Waarom op SQL niveau als je het ook op PHP niveau kan doen? Gewoon in je foreach/while een counter plaatsen ;)
de volledige 2 query's staan in m'n eerste post en daarstraks heb ik de query van Eddy gebruikt en dr alleen een GROUP BY aan toegevoegd. Maar als jij mij kan vertellen hoe ik een counter in m'n while lus kan plaatsen dan ben ik natuurlijk ook tevreden. Ik dacht alleen dat dit niet ging.
iChris schreef op 21.10.2008 14:18

Je doet een count, maar die kun je natuurlijk ook anders doen.. Waarom op SQL niveau als je het ook op PHP niveau kan doen? Gewoon in je foreach/while een counter plaatsen ;)

eeehrm... omdat het over het algemeen sneller is alles rond het ophalen van gegevens in SQL te doen? ik heb niet de volledige thread doorgelezen, maar over het algemeen is het toch aan te raden om zoveel mogelijk op databaseniveau af te handelen
Klopt, maar hoogstwaarschijnlijk maak je de "standaard" query's, en geen left/right/inner joins en group by's ;)

Edit: Bij een goede server is die snelheid trouwens te verwaarlozen. Het is nog altijd MySQL, en als je niet heb genormaliseerd is het alsnog een rotzooi.

Reageren