bin mal wieder am Basteln eines kleinen Forums. Auf der Startseite soll die Zahl der Beiträge in jedem Forum angezeigt werden sollen.
Erstmal die Tabelle:
Code:
CREATE TABLE IF NOT EXISTS forum (
id INT AUTO_INCREMENT PRIMARY KEY,
pid INT NOT NULL,
hits INT NOT NULL,
subject VARCHAR(200) DEFAULT '',
content TEXT NOT NULL DEFAULT '',
user VARCHAR(50) DEFAULT '',
email VARCHAR(100) DEFAULT '',
timestamp INT DEFAULT '0',
ip VARCHAR(15) DEFAULT '',
showemail CHAR(1) DEFAULT '1',
sendemail CHAR(1) DEFAULT '0'
);
Was bei SelfPHP z.B. 'Grundlagen' oder 'Off-Topic' ist, das hat bei mir die pid (parent id) 0. Alle neuen Beiträge werden dann mit dieser pid zugeordnet.
Gibt es eine ordentliche Methode, um die Zahl der Beiträge jedes Forums (alle Einträge, die sich auf einen Eintrag mit pid==0 beziehen) zu ermitteln? Schleifen & Co. entfallen, denn das würde zu langsam werden.
Das selbe Problem besteht auch bei den Hits: Wie zeige ich auf der Startseite an, wie oft in jedem Forum rumgeklickt wurde?
- ID 33 ist ein Hauptforum (wie in dem Board MySQL oder Off-Topic)
- ID 34 ist ein Thread in dem Unterforum 33
- 35 und 36 sind Beiträge im Thread 34 (darum auch 0 Hits)
Nun würde ich gerne wissen, wie viele Hits in Forum 33 getätigt wurden und wie viele Beiträge sich darin insgesamt befinden.
Wenn ich das in der obersten Ebene (praktisch ID==0) mache, dann stimmt die Anzahl doch nicht. Dann fehlen Beitrag 38 und 39, da diese sich auf 37 beziehen und anscheinend nichts mit 33 zu tun haben.
Das war es, was ich am Anfang meinte, dass man das in einer Schleife abfragen könnte, was ich aber nicht will.
Ahso, jetz hab ich's verstanden (glaube ich zumindest)
Ist's möglich innerhalb eines Querys ein zweites Query zu starten? Ansonsten sähe ich da keine andere möglichkeit als durchzuschleifen.
Wie unterscheidest du eigentlich zwischen Forum und Thread? Bloss durch die 0 in PID? Ich weiss nicht. ich würde da ehrlich gesagt mehrere Tabellen machen, finde das nicht so toll, alles in einer Tabelle zu halten.
Ist's möglich innerhalb eines Querys ein zweites Query zu starten? Ansonsten sähe ich da keine andere möglichkeit als durchzuschleifen.
Doch, mySQL 4 kann das (angeblich). Schimpft sich SubSELECT. Jetzt wo Du es sagst (ich sollte ausschlafen): Ich hab mySQL 4 und mein Provider auch. Also steht dem nix im Weg, außer meiner Unlust.
Zitat:
ich würde da ehrlich gesagt mehrere Tabellen machen, finde das nicht so toll, alles in einer Tabelle zu halten.
Jau, gehört sich auch so. Ich hatte bloß keine Lust dazu. :)
Ich werde mich dann mal an SubSELECTs versuchen. Aber nicht mehr heute....