Door
Onbekende gebruiker
op 03-05-2011 21:42
gewijzigd op 04-05-2011 17:07
1.856 views
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
Als je query werkt, kun je die gewoon vanuit PHP uitvoeren, het resultaat fetchen en de topics weergeven. Zie ook deze SQL beginnershandleiding voor voorbeelden van hoe je dat doet...
?
Onbekende gebruiker
04-05-2011 19:53
Ik heb het werkende gekregen, maar dan krijg ik alleen 't resultaat als er gereply't is, dus niet als er alleen een topic is geplaatst..
er klopt al het een en ander niet:
1. backticks horen niet thuis in SQL
2. GROUP BY klopt niet http://www.w3schools.com/sql/sql_groupby.asp
3. en mijn inziens horen topics en replies in 1 tabel
4. geef tabel velden een duidelijk naamgeving, datetime valt daar zeer zeker niet onder
5. engels en nederlands door elkaar heen gebruiken is ook niet je van het
6. een inner join gaat ook niet werken, daarmee pak je alleen topics waarbij op z'n minst 1 reactie opgegeven is
Note:
Je doet er verstandiger aan om de GROUP BY en MAX eruit te mikken en de max in een subquery uit te voeren.
Dan krijg je dus zoiets:
from lexoft_forum_topics t left join
(select tid,max(datetime) as last_replu from lexoft_forum_replys group by tid) as repl on repl.tid = t.tid
?
Onbekende gebruiker
04-05-2011 20:14
gewijzigd op 04-05-2011 20:16
Bedankt iig! :)
[size=xsmall]Toevoeging op 04/05/2011 20:15:42:[/size]
3. Ik had van een vriend als tip om het gescheiden te houden
Dat lijkt erop dat je nog even aflopend moet sorteren op de datumtijdstempel en vervolgens een LIMIT moet gebruiken om het aantal reacties te beperken.