Ben druk aan het werk met een simpel forum. In principe is ie bijna af zelfs.
Ik zit enkel met 1 puntje, ik wil het topic waarin het laatst gereageerd is bovenaan in de lijst hebben staan. Ik wil echter ook wat andere informatie van de poster uit een andere tabel trekken.
Waar het op neer komt is dat ik dus 3 tabellen heb waar ik informatie uit nodig heb. Tabel 1 met de topics, tabel 2 met de gegevens van de users en tenslotten tabel 3 met de forumreacties.
De tabellen :
Heb er een aantal velden uitgehouden en enkel het relevante deel overgehouden.
Mijn huidige query die alles ophaalt :
Hiermee krijg ik netjes alle info die ik nodig heb om het overzicht te krijgen over de topics. Nu wil ik dus enkel nog dat het topic met de laatste reactie bovenaan komt.
Alleen hoe doe ik dit
Ik had al wat zitten vogelen door enkel de twee tabellen voor het forum te gebruiken los van de userinfo. Als ik echter het volgende doe :
Dan krijg ik wel netjes het topic van de laatste reactie bovenaan, maar het blijft dan niet bij de 2 topics, maar die lijst gaat net zo lang door tot het aantal reacties. Terwijl het bij het aantal topics moet blijven. Hoe limit ik dat goed? Als ik met LIMIT 0,x ga limieten dan limit ik op de reacties, niet op de topics.
Kan iemand me op weg helpen?
Ik zit enkel met 1 puntje, ik wil het topic waarin het laatst gereageerd is bovenaan in de lijst hebben staan. Ik wil echter ook wat andere informatie van de poster uit een andere tabel trekken.
Waar het op neer komt is dat ik dus 3 tabellen heb waar ik informatie uit nodig heb. Tabel 1 met de topics, tabel 2 met de gegevens van de users en tenslotten tabel 3 met de forumreacties.
De tabellen :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| CREATE TABLE users ( uid int(10) DEFAULT '0' NOT NULL auto_increment, roepnaam varchar(20) NOT NULL, achternaam varchar(30) NOT NULL, PRIMARY KEY(uid) ); CREATE TABLE forum ( fid int(10) DEFAULT '0' NOT NULL auto_increment, titel varchar(120) NOT NULL, poster int(10) NOT NULL, bericht tinytext NOT NULL, timestamp DATETIME, PRIMARY KEY(fid) ); CREATE TABLE forumreacties ( frid int(10) DEFAULT '0' NOT NULL auto_increment, fid int(10) NOT NULL, poster int(10) NOT NULL, bericht tinytext NOT NULL, timestamp DATETIME, PRIMARY KEY(frid) ); |
Heb er een aantal velden uitgehouden en enkel het relevante deel overgehouden.
Mijn huidige query die alles ophaalt :
code:
1
2
3
4
5
| SELECT fid, titel, bericht, poster, status, timestamp, users.roepnaam, users.achternaam FROM forum,users WHERE forum.poster=users.uid ORDER BY forum.fid DESC |
Hiermee krijg ik netjes alle info die ik nodig heb om het overzicht te krijgen over de topics. Nu wil ik dus enkel nog dat het topic met de laatste reactie bovenaan komt.
Alleen hoe doe ik dit
code:
1
2
3
4
| SELECT forum.fid FROM forum, forumreacties ORDER BY forumreacties.frid, forum.fid DESC; |
Dan krijg ik wel netjes het topic van de laatste reactie bovenaan, maar het blijft dan niet bij de 2 topics, maar die lijst gaat net zo lang door tot het aantal reacties. Terwijl het bij het aantal topics moet blijven. Hoe limit ik dat goed? Als ik met LIMIT 0,x ga limieten dan limit ik op de reacties, niet op de topics.
Kan iemand me op weg helpen?