kostenloser Webspace werbefrei: lima-city


[MYSQL] Problem mit verknüpten Tabellen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    b****y

    Hallo alle miteinander!
    Ich habe für mein eigenes Forum drei Tabellen angelegt, die folgendermaßen aussehen:

    `foren` (
      `id` int(11) NOT NULL auto_increment,
      `name` tinytext collate latin1_general_ci NOT NULL,
      `info` tinytext collate latin1_general_ci NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;
    
    `threads` (
      `id` int(11) NOT NULL auto_increment,
      `fid` int(11) NOT NULL default '0',
      `topic` tinytext collate latin1_general_ci NOT NULL,
      `created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      `name` tinytext collate latin1_general_ci NOT NULL,
      `closed` int(1) default '0',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;
    
    `answers` (
      `id` int(11) NOT NULL auto_increment,
      `tid` int(11) NOT NULL default '0',
      `fid` int(11) NOT NULL default '0',
      `user` tinytext collate latin1_general_ci NOT NULL,
      `topic` tinytext collate latin1_general_ci NOT NULL,
      `text` text collate latin1_general_ci NOT NULL,
      `created` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=64 ;


    Ich denke die drei Tabellen sind selbsterklärend. Mit folgendem Query lese ich die Daten aus der Tabelle threads sowie weitere Infos aus der Tabelle answers aus: (die Variable $fid wird zuvor festgelegt)

    SELECT threads.topic, threads.name, threads.fid, threads.id, threads.created, threads.closed, Max(a1.created) as timestamp, COUNT(a1.user) AS antworten FROM threads
    INNER JOIN answers AS a1 ON (a1.tid=threads.id)
    WHERE threads.fid='$fid'
    GROUP BY threads.topic ORDER BY timestamp DESC


    Damit werden alle Threads des gewählten Forums mit der Anzahl der Beiträge, dem Autor, dem Erstellungsdatum und dem Datum des letzten Eintrags aufgelistet.
    Soweit funktioniert das wunderbar.

    Doch nun folgendes Problem:
    ich will zu dem Datum des letzten Eintrages auch jeweils den Autor des letzten Beitrages ausgeben. Trotz stundenlanger Suche bekomme ich das einfach nicht hin. :-(

    Vielleicht habt ihr ja eine Idee, ich bin am verzweifeln.
    MfG, Bohrty,
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e********l

    Das ist eigentlich ganz einfach...

    Allerdings musst du aus reinen Design Gründen deine Struktur erweitern.
    Deine thread Tabelle sollte um ein Feld mit der UserID des letzten Beitrags erweitert werden

    Ebenso empfiehlt es sich aus Gründen der Geschwindigkeit die Antworten/Views statisch in der THread Tabelle zu speichern und nicht bei jedem Seitenaufruf zählen zu lassen.

    Und aus dem User Feld das derzeit ein Textfeld ist machst du ein SmallInt oder Integer Feld, welche auf die ID in der dann zu erstellenden User Tabelle verweist. Dadurch vermeidest du Redundanzen.

    Abschließend einfach einen weiteren Join an deine Abfrage anhängen und du hast das Problem gelöst ^^

    Evil
  4. Autor dieses Themas

    b****y

    Vielen Dank für deine ausführliche Antwort. Dass ich meine Tabelle erweitern muss, stört mich nicht, ich hab mir ja schon gedacht, dass es nicht anders gehen wird ;)

    Die Anzahl der Antworten statisch zu speichern ist auch eine gute Idee, werde ich gleich umsetzen.

    Und wenn ich schon dabei bin, dann kann ich auch gleich das Userfeld in ein SmallInt-Feld ändern. :)

    Nochmals vielen Dank für deine Hilfe.

    MfG, Bohrty.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!