Hallo allerseits,
für ein privates Projekt habe ich vor geraumer Zeit ein eigenes Forum programmiert, das lediglich über einen Bruchteil der in kommerziellen Foren angeboteten Funktionen verfügen soll. Da mein Wissen über komplexe SQL-Abfragen leider noch begrenzt ist, scheitere ich derzeit an der Datenbankabfrage, die mir in der Forenübersicht die vorhandenen Foren auslesen soll und ausgeben soll, ob in einem der Foren ein Thema noch ungelesene Beiträge enthält.
Ich speichere derzeit die Forendaten in folgenden Tabellen:
Alles anzeigen
Die Tabelle threadstatus enthält, wie leicht zu sehen, den Zeitpunkt des letzten Zugriffs eines Benutzers x auf ein Thema y. Sofern kein Eintrag zu einem Thema von einem Benutzer vorhanden ist, wurde das Thema noch gar nicht besucht und gilt folglich als ungelesen.
Folgende SQL-Abfragen nutze ich derzeit:
Liste aller Foren
Alles anzeigen
Liste aller Themen in einem Forum
Ich möchte nun gern gewissermaßen die Funktionalität beider Abfragen kombiniert wissen, eben um in der Forenübersicht herauszufinden, ob in diesem Forum noch Themen mit ungelesenen Beiträgen bzw. ungelesene Themen enthalten sind und diese als Variable (wie bei der Forenansichts-Abfrage: STATUS) ausgeben.
Kann mir jemand helfen, das zu bewerkstelligen, oder ist meine Datenbankkonzeption sowieso falsch gedacht?
Danke vorab,
Philipp
für ein privates Projekt habe ich vor geraumer Zeit ein eigenes Forum programmiert, das lediglich über einen Bruchteil der in kommerziellen Foren angeboteten Funktionen verfügen soll. Da mein Wissen über komplexe SQL-Abfragen leider noch begrenzt ist, scheitere ich derzeit an der Datenbankabfrage, die mir in der Forenübersicht die vorhandenen Foren auslesen soll und ausgeben soll, ob in einem der Foren ein Thema noch ungelesene Beiträge enthält.
Ich speichere derzeit die Forendaten in folgenden Tabellen:
Quellcode
- ---- Tabellenstruktur für Tabelle `forums`
- --
- CREATE TABLE `forums` (
- `id` int(11) NOT NULL auto_increment,
- `order` int(11) NOT NULL,
- `name` varchar(255) NOT NULL,
- `lastthread` int(11) NOT NULL,
- `private` int(2) default NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- -- --------------------------------------------------------
- --
- -- Tabellenstruktur für Tabelle `postings`
- --
- CREATE TABLE `postings` (
- `id` int(11) NOT NULL auto_increment,
- `userid` int(11) NOT NULL,
- `threadid` int(11) NOT NULL,
- `time` int(11) NOT NULL,
- `text` text NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- -- --------------------------------------------------------
- --
- -- Tabellenstruktur für Tabelle `threads`
- --
- CREATE TABLE `threads` (
- `id` int(11) NOT NULL auto_increment,
- `userid` int(11) NOT NULL,
- `forumid` int(11) NOT NULL,
- `time` int(11) NOT NULL,
- `title` varchar(255) NOT NULL,
- `sticky` int(11) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- -- --------------------------------------------------------
- --
- -- Tabellenstruktur für Tabelle `threadstatus`
- --
- CREATE TABLE `threadstatus` (
- `userid` int(11) NOT NULL,
- `threadid` int(11) NOT NULL,
- `time` int(11) NOT NULL
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Die Tabelle threadstatus enthält, wie leicht zu sehen, den Zeitpunkt des letzten Zugriffs eines Benutzers x auf ein Thema y. Sofern kein Eintrag zu einem Thema von einem Benutzer vorhanden ist, wurde das Thema noch gar nicht besucht und gilt folglich als ungelesen.
Folgende SQL-Abfragen nutze ich derzeit:
Liste aller Foren
Quellcode
Liste aller Themen in einem Forum
Ich möchte nun gern gewissermaßen die Funktionalität beider Abfragen kombiniert wissen, eben um in der Forenübersicht herauszufinden, ob in diesem Forum noch Themen mit ungelesenen Beiträgen bzw. ungelesene Themen enthalten sind und diese als Variable (wie bei der Forenansichts-Abfrage: STATUS) ausgeben.
Kann mir jemand helfen, das zu bewerkstelligen, oder ist meine Datenbankkonzeption sowieso falsch gedacht?
Danke vorab,
Philipp