JOIN-Problem : mehrere Tabellen und Verknüpfungen

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

  • JOIN-Problem : mehrere Tabellen und Verknüpfungen

    Hallo, ich schreibe derzeit an einem eigenen Forum und stehe vor einem .. Problem :

    Ich habe je eine Tabelle für Threads, Postings und Foren.

    Ich will nun am besten mit einem SQL-Befehl folgendes Ergebnis haben : Alle Daten des jeweiligen Forums (Name, Beschreibung, Moderatoren), die Anzahl der Threads (am besten per count auf die Threadtabelle), die Anzahl der Postings ( wieder am besten per count auf die Postingtabelle). Bis hierher alles nicht das Problem... Dann fehlt da noch die Anzeige des letzten beitrages in diesem Forum, hier wirds problematisch, ich habe etwas mit einem LEFT JOIN und GROUP BY gebastelt was eigentlich ganz gut funktioniert hat, bis darauf das ich immer den ersten datensatz, somit also das älteste Posting des Forums hatte und nicht das neuste....

    Der bisherige Befehl :

    SELECT forum.id, forum.name, forum.text, forum.c_id, forum.threads, forum.posts, post.name AS pname, post.id AS p_id, user.user AS u_name, user.id AS u_id FROM forum AS forum LEFT JOIN post AS post ON forum.id=post.f_id LEFT JOIN user AS user ON post.u_id=user.id WHERE ISNULL(forum.del) GROUP BY forum.id ORDER BY forum.sort ASC;

    Vielleicht hat jemand eine Idee, ich bin mit meinem (SQL-)Latein irgendwie am Ende... Es wäre zwar einfach das ganze Manuell abzufragen, ich bin mir aber nicht sicher ob das (gerade bei vielen Unterforen) noch performant ist....

  • #2
    Das Problem ist also, dass du den ältesten Beitrag erwischst ?
    Probiers mal damit (nicht getestet).

    Code:
    SELECT forum.id, forum.name, forum.text, forum.c_id, forum.threads, forum.posts, post.name AS pname, post.id AS p_id, user.user AS u_name, user.id AS u_id FROM forum AS forum LEFT JOIN post AS post ON forum.id=post.f_id LEFT JOIN user AS user ON post.u_id=user.id WHERE ISNULL(forum.del) GROUP BY forum.id ORDER BY forum.sort ASC,post.posttime DESC;
    PS: wenn du irgendwann 60.000 Einträge in der Post Tabelle hast, kann ein Join schon recht langsam sein.
    Wenn du ein paar Redundanzen ertragen kannst, gehts etwas schneller ! Speicher die Anzahl der Themen/Beiträge sowie die ID des letzten Beitrages direkt in der Forum Tabelle. Du müsstest diese Informationen natürlich immer aktualisieren.. Aber vielleicht lohnt es sich irgendwann.
    Andererseits mag ich Redundanzen auch nicht sonderlich.
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar

    Lädt...
    X