Hallo in die Runde!
Ich quäl mich mal wieder mit ner leidigen SQL-Abfrage rum, die mich schon den ganzen Nachmittag beschäftigt, aber ich kriegs nicht gebacken. Vielleicht kann mir jemand auf die Sprünge helfen, der ein bißchen mehr Abstand hat als ich momentan...ich glaub ich bin in ner mentalen Sackgasse gelandet
Problematik:
Ich schreibe gerade ein kleines Forum, was sich optisch an den gängigen Forensystemen orientiert (ich hab ein bißchen in phpBB rumgeschnüffelt und mir paar Ideen bzgl. DB-Aufbau geholt).
Ich möchte, daß immer das Topic in der Beitragsübersicht oben steht, wo zuletzt reingepostet wurde. Momentan funkt das bei mir nicht, ich schaffs nur nach Erstellungsdatum des Topics zu ordnen.
Es gibt folgende Tabellen:
Abfragen tu ich im PHP-Script so:
topic_time ist aber, wie oben schon gesagt, die Erstellzeit des Topics.
post_time wäre die richtige Spalte, nach ich ordnen müsste, aber irgendwie muss ich die posts-Tabelle ja erstmal in die Abfrage reinkriegen, bzw. muss halt immer Erstellzeit des neusten Postings des jeweiligen abgefragten Topics mit rein. Argh, mir platzt der Kopf...
Ich hatte was mit ner zusätzlichen WHERE-Klausel versucht, à la (SELECT MAX(post_time)) versucht, aber das hat nicht geklappt
Der Quelltext vom phpBB hilft mir da auch nicht sehr weiter, obwohl das bei dem Ding ja genauso funktioniert, wie ich das will. Aber ich find nicht mal die verantwortliche Codezeile
Ich glaub fast die Unterteilung Topics/Posts in zwei Tabellen war für meine Zwecke gar nicht so sinnvoll...kommt halt davon, wenn man zuviel abschaut
Würde mich freuen, wenn mir jemand auf die Sprünge helfen kann
Ich quäl mich mal wieder mit ner leidigen SQL-Abfrage rum, die mich schon den ganzen Nachmittag beschäftigt, aber ich kriegs nicht gebacken. Vielleicht kann mir jemand auf die Sprünge helfen, der ein bißchen mehr Abstand hat als ich momentan...ich glaub ich bin in ner mentalen Sackgasse gelandet
Problematik:
Ich schreibe gerade ein kleines Forum, was sich optisch an den gängigen Forensystemen orientiert (ich hab ein bißchen in phpBB rumgeschnüffelt und mir paar Ideen bzgl. DB-Aufbau geholt).
Ich möchte, daß immer das Topic in der Beitragsübersicht oben steht, wo zuletzt reingepostet wurde. Momentan funkt das bei mir nicht, ich schaffs nur nach Erstellungsdatum des Topics zu ordnen.
Es gibt folgende Tabellen:
PHP-Code:
CREATE TABLE `posts` (
`post_id` mediumint(8) unsigned NOT NULL auto_increment,
`topic_id` smallint(8) unsigned NOT NULL default '0',
`post_subject` varchar(60) NOT NULL default '',
`post_text` text NOT NULL,
`poster_id` mediumint(8) NOT NULL default '0',
`post_time` int(11) NOT NULL default '0',
`poster_ip` varchar(15) NOT NULL default '0.0.0.0',
`post_active` char(1) NOT NULL default '0',
PRIMARY KEY (`post_id`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `topics`
#
CREATE TABLE `topics` (
`topic_id` mediumint(8) NOT NULL auto_increment,
`topic_title` varchar(60) NOT NULL default '',
`topic_poster` mediumint(8) NOT NULL default '0',
`topic_time` int(11) NOT NULL default '0',
`topic_active` char(1) NOT NULL default '0',
PRIMARY KEY (`topic_id`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `users`
#
CREATE TABLE `users` (
`user_id` mediumint(8) NOT NULL auto_increment,
`username` varchar(25) NOT NULL default '',
`user_password` varchar(32) NOT NULL default '',
`user_email` varchar(255) NOT NULL default '',
`user_firstname` varchar(20) NOT NULL default '',
`user_lastname` varchar(35) NOT NULL default '',
`user_regtime` varchar(11) NOT NULL default '',
PRIMARY KEY (`user_id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
PHP-Code:
$sql = "SELECT topics.*, users.*
FROM topics,users
WHERE users.user_id = topics.topic_poster
ORDER BY topic_time DESC";
post_time wäre die richtige Spalte, nach ich ordnen müsste, aber irgendwie muss ich die posts-Tabelle ja erstmal in die Abfrage reinkriegen, bzw. muss halt immer Erstellzeit des neusten Postings des jeweiligen abgefragten Topics mit rein. Argh, mir platzt der Kopf...
Ich hatte was mit ner zusätzlichen WHERE-Klausel versucht, à la (SELECT MAX(post_time)) versucht, aber das hat nicht geklappt
Der Quelltext vom phpBB hilft mir da auch nicht sehr weiter, obwohl das bei dem Ding ja genauso funktioniert, wie ich das will. Aber ich find nicht mal die verantwortliche Codezeile
Ich glaub fast die Unterteilung Topics/Posts in zwei Tabellen war für meine Zwecke gar nicht so sinnvoll...kommt halt davon, wenn man zuviel abschaut
Würde mich freuen, wenn mir jemand auf die Sprünge helfen kann
Kommentar