Willkommen in der Webstatt Zum Webstatt Blog und Stories
leo am 14.09.06 11:15

hallo allerseits,
hab mal wieder ein kleines problem...

ich habe eine art forum.
es gibt eine tabelle "thread" in der ich die gestarteten themen (id, title, text) speichere.
zusätzlich gibt es eine tabelle "post" die die beiträge zu diesen themen beinhaltet (id, text, thread)

da es sich insgesamt in dem system nicht nur um das forum sondern auch andere funktionen dreht, gibt es eine tabelle "log"
die dient als eine art log-buch und zeichnet jedes ereignis auf (eingeloggt, beitrag geschrieben / editiert usw)

in der wird nun das datum, der user, die aktion (zB add-thread oder add-post) und die id des betroffenen datensatzes gespeichert.

jetzt möchte ich für die übersicht der themen folgendes haben:
die themen titel der letzten 10 aktiven themen.
als beispiel führe ich mal http://sourceforge.net/forum/forum.php?forum_id=349817 zB an.

SELECT `threadTitle` , `threadId` , `logUser`
FROM `boardThread` , `boardPost` , `log`
WHERE

??

ORDER BY `logDate` DESC
LIMIT 10


so in etwa...nur die where-clause kann ich mir irgendwie nich richtig erdenken...

hat jemand eine idee und kann mir helfen?!

oder bleibt mir nur der umweg über php (2 abfragen, letzten themen und letzte themen basierend auf "post", array_merge, nach datum absteigend sortieren, array_slice, ausgeben)

vielen dank - bin auch für kleine denkanstöße und andere methoden dankbar :)
gruß & angenehmen donnerstag noch - der sommer gibt ja nochmal alles, leo

netcup.de Warum gibt es hier Werbung?
Sven Sven am 14.09.06 12:36

Brauchst du da nicht einfach noch ein JOIN zu der Tabelle mit logDate?

leo am 14.09.06 13:48

hmm...aber wie - ich kriegs grad gar nicht gebacken - irgendwie läuft das nich so wie ich es haben mag :D

gruß, leo.

Sven Sven am 14.09.06 14:11

Öhm ja, hab ich schonmal gesagt das ich JOINS nicht mag?

leo am 14.09.06 14:43

ich auch :D blick noch nich so ganz durch, hab mir mal fix use bb angeguckt im source (http://usebb.cvs.sourceforge.net/usebb/UseBB/forum.php?view=markup) ist folgendes zu finden:

$result = $db->query("SELECT t.id, t.topic_title, t.last_post_id, t.count_replies, t.count_views, t.status_locked, t.status_sticky, p.poster_guest, p2.poster_guest AS last_poster_guest, p2.post_time AS last_post_time, u.id AS poster_id, u.displayed_name AS poster_name, u.level AS poster_level, u2.id AS last_poster_id, u2.displayed_name AS last_poster_name, u2.level AS last_poster_level FROM ".TABLE_PREFIX."topics t, ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."members u ON p.poster_id = u.id, ".TABLE_PREFIX."posts p2 LEFT JOIN ".TABLE_PREFIX."members u2 ON p2.poster_id = u2.id WHERE t.forum_id = ".$_GET['id']." AND p.id = t.first_post_id AND p2.id = t.last_post_id ORDER BY t.status_sticky DESC, p2.post_time DESC LIMIT ".$limit_start.", ".$limit_end);

bringt mich aber auch nicht so richtig weiter...hat jemand noch nen denkanstoß oder nen code-beispiel?

gruß, leo.

Sven Sven am 14.09.06 15:00

Vielleicht hilft das : http://dev.mysql.com/doc/refman/5.1/de/join.html

phore phore am 15.09.06 10:39

das problem hatte ich auch mal.

einfachste lösung: in der thread-tabelle ein feld "lastpost", dann bei jedem neuen kommentar den entsprechenden thread.lastpost updaten..dann kannst du einfach nur die spalte abfragen.

andere variante ist eben ein join. nachzulesen im mysql manual.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt