Beste PHPHulpers!

Ik loop tegen een probleem aan, al 2 dagen, ik ben bezig met een forum aan het bouwen, op PHP-gebied lukt alles, maar met SQL loop ik nu tegen iets aan!
Ik heb 2 tabellen:
lexoft_forum_topics
&
lexoft_forum_replys

Mijn bedoeling is om in de linkermenu de laatste 10 forum berichten te laten zien, als ik alleen replys zou uitlezen krijg ik alleen de reacties, niet de topics zelf, een maat van mij had mij al een stukje SQL-query voor mij geschreven, in PHPmyAdmin werkte het, maar ik weet niet hoe je dat moet gebruiken in een PHP mysql_query.
	SELECT
		t.*,
		MAX(r.`datetime`) laatste_reply
	FROM
		lexoft_forum_replys r
	INNER JOIN
		lexoft_forum_topics t
	ON
		t.tid = r.tid
	GROUP BY
		r.tid
	ORDER BY
		r.`datetime` 
	DESC LIMIT 10

Zou iemand mij willen helpen?

Mvg. Alex van Turenhout
Alex van Turenhout op 04/05/2011 20:49:30

Hij werkt al 10 jaar aan php en maakt site's voor speurders.nl dus niet mokken!
Dit zegt niets over zijn expertise, is misschien al 10 jaar aan het klooien met zijn eigen standaards en datamodellering. Ik liep vorige week bij een geronommeerde bestelsite (dewatersportwinkel.nl) na het betalen per ideal ook 10x tegen een "headers already sent aan". Er wordt wat afgebaggerd in php. In het land der blinden is eenoog koning. Kortom: zoals Noppes zegt: topics en replies in 1 tabel!

John D op 05/05/2011 11:57:06
Kortom: zoals Noppes zegt: topics en replies in 1 tabel!

En toch ben ik het daar niet mee eens. Een topic is iets wezenlijks anders dan een post. Zo kun je een topic sluiten en een post niet, heeft een topic een relatie tot een board binnen een forum en een post niet, enzovoorts...

Mijns inziens heb je dus wel degelijk twee tabellen nodig, een voor de topics en een voor de posts. Een topic heeft een FK relatie tot een board en een post heeft een FK relatie tot een topic. De startpost van een topic vind ik echter geen eigenschap van een topic, het is, zoals de naam al zegt, een post en hoort dus in de tabel met posts thuis. De startpost is eenvoudigweg de oudste post die bij een topic hoort.

@Joren: Een zeer correcte definitie en hier zeg je dus ook: alle posts in 1 tabel + een separate tabel voor de relevante gegevens van de topic die je niet wilt herhalen per post. Duidelijk! Een verduidelijking van wat Noppes en ik bedoelen.
Oké, leuke discussie ^^
maar ik loop tegen de laatste probleem:
ik heb een query en daarmee wil ik de laatste 10 replys opvragen, hoe kan ik Distinct alleen toepassen met `tid` en niet met DATE_FORMAT:
SELECT DISTINCT(tid), DATE_FORMAT(`datetime`, '%H:%i') AS `time` FROM `lexoft_forum_replys` ORDER BY `datetime` DESC LIMIT 12


[size=xsmall]Toevoeging op 07/05/2011 18:49:59:[/size]

Opgelost met behulp van GROUP BY tid
Alex van Turenhout op 07/05/2011 15:49:37

Opgelost met behulp van GROUP BY tid

GROUP BY is geen juiste oplossing, lees ook: http://phptuts.nl/view/2/

Als ik het goed begrijp wil je de 10 topics ophalen waarin voor het laatst gereplied is? Zoek even op het forum, er is niet lang geleden eenzelfde vraag voorbij gekomen...

Ik kan het niet vinden! Wat was de titel dan? :p

Reageren