[SQL] Topics selecteren
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?
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?
Gesponsorde koppelingen:
Post eens wat code?
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
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
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
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
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.
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 ;)
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 ;)
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
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
Ja heel erg bedankt! :D
Gewijzigd op 01/01/1970 01:00:00 door Thijs X



