nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Forum Datenbanklayout

Von: Matthias Scholz (morpho@gmx.de) [Profil]
Datum: 24.06.2008 15:12
Message-ID: <782bae1b-56bc-433c-ac45-599c46dac065@m73g2000hsh.googlegroups.com>
Newsgroup: de.comp.datenbanken.mysql
Hallo!
Ich bin im Moment dabei ein kleines Forum in PHP zu erstellen. Dabei
stosse ich auf einige Probleme beim Datenbanklayout.

Ich versuche das Problem mal auf ein Minimum zu reduzieren. Also es
gibt unter anderem folgende Tabellen:

forum_threads ( int id, int forum_id, varchar title, int views, int
answers, .. )

forum_posts ( int id, int user_id, int thread_id, timestamp created,
text content, ... )

forums ( int id, varchar name, ... )

In der Tabelle forum_threads wird nur der Titel des Threads und die
Anzahl der Antworten und Views gespeichert. Dementstrechend werden bei
der Erstellung eines neuen Threads 2 neue Zeilen in 2 verschiedenen
Tabellen angelegt. Einmal in forum_threads fuer den neuen Thread und
der eigentliche Beitrag landet in forum_posts.

Die Probleme sind Folgende:

1. Ich will forum_threads anhand forum_posts.created sortieren. Damit
will ich bewirken, dass der zuletzt beantwortete Thread immer an
oberster Stelle steht. Aber wie mache ich das genau?
SELECT * from forum_threads, forum_posts where forum_threads.id
forum_posts.thread_id group by forum_threads.id order by created desc
- So ungefaehr? Allerdings ist beim Gruppieren immer die Zeile mit dem
kleinsten created Wert selektiert. Das ordnen kommt ja erst nach dem
Gruppieren. Wie kann ich das Gruppieren beeinflussen?

2. Ich wuerde gerne zu jedem Forum den zuletzt geschriebenen Beitrag
selektieren und dann in jedem Forum zu jedem Thread die zuletzt
geschriebene Antowort selektieren. Im Prinzip ein aehnliches Problem
wie Nr. 1.

Ich hoffe ihr koennt mir helfen und bedanke mich schonmal im Voraus.
Sorry fuer die Umlaute, ich bin in Suedamerika und habe keine Deutsche
Tastatur.

Achja, ganz abgesehen davon, ist dieses SQL Layout fuer ein Forum in
Ordnung? Wie wuerdet ihr sowas loesen?

Viele Gruesse,
Matthias

[ Auf dieses Posting antworten ]

Antworten