Hallo, ik heb een probleempje met een SQL-query die ik gebruik voor een forum. Het doel van de query is dat hij data uit drie verschillende tabellen haalt:

1- De tabel met de topics
2- De tabel met de replies op deze topics
3- De tabel met de forumgebruikers

Er moet een lijst met topics weergegeven worden, waaronder de naam van de topicstarter staat, en daarnaast moeten het aantal replies worden geteld. In een later stadium, zodra ik deze query lopende heb gekregen, wil ik ook nog de naam, en datum van de laatste reply toevoegen.

De query die ik nu heb werkt opzich wel, alleen krijg ik nog niet de usernames in het result...

De query luidt als volgt:

SELECT
ft.*,
(SELECT
COUNT(PostTopicID)
FROM
forumposts
WHERE
(PostTopicID=ft.TopicID)
GROUP BY
TopicID
) AS ReplyCount
FROM
database.forumposts AS fp,
database.forumtopics AS ft
LEFT JOIN
database.forumusers
ON
UserID=ft.TopicStarterID
GROUP BY
TopicID
ORDER BY
ft.TopicDate
DESC

Wat doe ik verkeerd? Ik heb het idee dat ik iets fout doe met de left join..
Misschien zo?:


SELECT
	ft.*,
	fu.*,
	(SELECT
		COUNT(PostTopicID)
		FROM
		forumposts
		WHERE
		(PostTopicID=ft.TopicID)
		GROUP BY
		TopicID ) AS ReplyCount
FROM
	database.forumposts AS fp,
	database.forumtopics AS ft
	
LEFT JOIN
	database.forumusers AF fu
	ON
	UserID=ft.TopicStarterID
	
GROUP BY
	TopicID

ORDER BY
	ft.TopicDate DESC


Waarom doe je eigenlijk die group by ?
Bedankt, dat lijkt het te doen! Die group by had ik omdat ik anders een error kreeg.. Ik zal dat nog even bekijken.
Is er nu ook een manier om erachter te komen van wie de laatste reply is op het topic? Daar kom ik helaas ook nog niet helemaal uit.

Reageren