Hallo allemaal,

Ik zit met een probleem, ik wil al mijn topics ophalen van de database en sorteren op 2 dingen, namelijk sticky en op op laatst geposte bericht uit een topic.
Het probleem zit het hem in het sorteren op het laatst geposte bericht.

Structuur:
-- topics --
topic_ID
gebruiker_ID
titel
bericht
datum
sticky

-- berichten --
bericht_ID
gebruiker_ID
topic_ID
bericht
datum

Iemand een idee hoe ik dit het beste kan doen?
Het gaat eigenlijk alleen om de SQL query waar ik een probleem ondervind, datastructuur van de database is in mn beginpost al geplaatst en is de code verder ook niet relevant imo.

[edit]
Het kan natuurlijk heel vies om een veld bij topic toe te voegen en die te updaten zodra er een nieuwe post is gemaakt, maar er moet een betere en mooiere oplossing zijn.

Het is misschien beetje krom uitgelegd vandaar even een voorbeeldje:

Topicnaam <sticky>
Topicnaam <sticky>
Topicnaam : Bericht vandaag 13:23
Topicnaam : Bericht vandaag 12:54
Topicnaam : Bericht gister 22:34
Topicnaam : Bericht Zondag 12:34
[/edit]
select * from topics as t, berichten as b
where t.topic_ID=b.topicID
order by t.sticky, b.datum ASC

Nu krijg je alleen ook alle posts terug... Denk niet dat dat de bedoeling is. Dan moet je een left of een right join oid gebruiken, maar daar heb ik geen verstand van :x
Ik denk dat je een tabel extra nodig hebt voor het gelezen hebben van topics. Een tabel waar je 4 velden hebt, nl. read_id, topic_id, user_id, read.

Als een gebruiker een nieuw bericht post wordt bij alle users in de tabel de "read" op 0 gezet. bij het uitlezen controleer je gewoon of de huidige gebruiker het al gelezen heeft door een SELECT query op deze tabel los te laten.
@ Derk,
Ja zoiets idd maar met die JOINS heb ik zelf ook altijd problemen vandaar dat ik hier een topic aanmaak.

@Jurgen,
Dat is niet precies wat ik bedoel, ik wil niet een extra tabel aanmaken.


Wacht wel tot Frank online komt ;)

SELECT
	t.topic_ID,
	t.gebruiker_ID,
	t.titel,
	(
		SELECT
			datum
		FROM
			berichten
		WHERE
			topic_ID = t.topic_ID
		ORDER BY
			datum DESC
		LIMIT 1
	) AS datumLaatsteBericht
FROM
	topics AS t
ORDER BY
	sticky ASC,
	datumLaatsteBericht DESC

Zoiets?
@ Blanche,
Ja heel erg bedankt! :D

Reageren