[MySQL 3.23.X] forum im eigenbau

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 3.23.X] forum im eigenbau

    Hi!

    Ich bin gerade dabei auf meiner Homepage ein Forum einzurichten. Da ich das ganze eher schlichte halten will, hab ich mich dazu entschieden das ganze mittels einer Tabelle zu realisieren (abgesehen mal von der sowieso notwendigen Tabellen für die Userverwaltung).

    Also, die Tabelle hat diese Form:

    `ID` int(10) unsigned NOT NULL auto_increment,
    `ParentID` int(10) unsigned default NULL,
    `titel` text NOT NULL,
    `text` text,
    `datum` text,
    `besitzer` int(11) default NULL,

    ParentID verweist auf das erste Posting des aktuellen Threads - d.h. das erste Posting hat den Wert NULL für ParentID.

    Nun zeige ich auf der Startseite alle Threads an:
    SELECT A.ID, A.titel, A.besitzer, B.username FROM forum A, user B WHERE A.ParentID IS NULL AND A.besitzer = B.ID ORDER BY A.datum DESC

    funktioniert auch ohne Probleme - nur würde ich jetzt auch noch ganz gerne in der selben Abfrage gleichzeitig die Anzahl der Replies und das Datum des letzten Posts anzeigen lassen - nur mit COUNT() hab ich das nicht so ganz hinbekommen.

    wer sich das ansehen will: http://mas.coolfreepages.com
    user: test
    pass: 12345

    Danke und Ciao
    Mario

  • #2
    1. ist das aufwendig
    2. braucht es länger, um das jedesmal abzufragen

    ich würde für die beiden ne extra spalte anlegen und diese bei jedem update, delete oder insert in der post-tabelle updaten

    Kommentar


    • #3
      das wollte ich eigentlich wegen der redundanten datenspeicherung vermeiden - aber wenns anders zu aufwendig wäre dann ist es wahrscheinlich doch so gescheiter

      trotzdem - rein informativ - wie würde das ganze aussehn, wenn ich das ganze mit der 'ursprünglichen' Tabelle machen möchte.

      kann man das irgendwie mit sub-selects realisieren ?? wenn ja, wie?
      oder gibts nur die Möglichkeit für jeden Datensatz eine eigene select-abfrage zu starten?

      Kommentar


      • #4
        für "rein informativ" ist der aufwand für eine antwort zu groß.

        Kommentar


        • #5
          hier die abfrage (falls wen interessiert) - also zumindest mal die anzahl der replies funktioniert

          SELECT
          A.ID,
          A.titel,
          A.besitzer,
          B.username,
          count(X.ID) AS replies
          FROM
          forum A,
          user B
          LEFT OUTER JOIN
          forum X ON (X.ParentID = A.ID)
          WHERE
          A.ParentID IS NULL
          AND A.besitzer = B.ID
          GROUP BY A.ID
          ORDER BY A.datum DESC

          Kommentar

          Lädt...
          X