[MySQL] Join Problem

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

  • [MySQL] Join Problem

    Hi,

    ich habe mir ein kleines Posting script erstellt was auf 2 Mysql Tabellen basiert:

    Tabelle forum:

    topicid | topic | created

    Tabelle forum_posts:

    id | topicid | posterid | ptext | time


    Ich möchte nun die 'Foren-Threads' die in der Tabelle forum stehen ausgeben, und zwar geordnet nach dem aktuellsten Post zu diesem Thread

    also z.b.

    Thread 1 -> erstellt: heute, letzter post: heute 16:00 UHR
    Thread 2 -> erstellt: gestern, letzter post: heute 20 UHR

    nun soll "Thread 2" vor "Thread 1" gelisted werden da dieser ja "neuer" ist.

    ich habe dies mit folgendem Select versucht:

    PHP-Code:
    $sql "SELECT 
    A.topicid, 
    A.created,
    A.topic 
    FROM forum_posts B
    LEFT JOIN forum A
    ON A.topicid = B.topicid
    WHERE B.aid = '
    $kategorie'
    ORDER BY B.time DESC"
    $query mysql_query($sql,$db); 
    dieser Select ordnet zwar nach dem neusten eintrag im Thread, jedoch wird der Thread mit gleichem namen mehrfach angezeigt anbhaenig von der anzahl der posts des Threads.

    wenn mir jemand helfen kann wäre ich demjenigen sehr dankbar

  • #2
    Probier' mal sowas in der Art:
    Code:
    SELECT A.topicid, A.created, A.topic
       FROM forum A
      INNER JOIN forum_posts B
         ON A.topicid = B.topicid
        AND B.aid = '$kategorie'
      GROUP BY A.topicid, A.created, A.topic
      ORDER BY MAX(B.time) DESC
    Info's zum gruppieren ... http://dev.mysql.com/doc/mysql/en/SELECT.html
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      hab dein vorschlag soeben ausprobiert, jedoch bekomme ich nur ein
      "Invalid use of group function"

      wenn ich das
      Code:
      ORDER BY max(B.time) DESC
      in
      Code:
      ORDER BY B.time DESC
      abändere kommt zwar kein Fehler mehr, zwar werden die Threads nur noch einmal gelisted, aber leider nicht nach dem Neusten Post.

      Die MySQL Documentation habe ich mir auch schon angesehen jedoch komme ich auf kein benutzbares Ergebnis.
      Zuletzt geändert von lordz; 13.07.2004, 23:48.

      Kommentar


      • #4
        Ja ... das kann sein ... also nochmal umbauen ...
        Code:
        SELECT A.topicid, A.created, A.topic, MAX(B.time) last_post
           FROM forum A
          INNER JOIN forum_posts B
             ON A.topicid = B.topicid
            AND B.aid = '$kategorie'
          GROUP BY A.topicid, A.created, A.topic
          ORDER BY last_post DESC
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          hi,

          nun funktioniert es

          vielen danke fuer deine hilfe

          Kommentar

          Lädt...
          X