MySQL Query für Forum

  • Moin,

    ich hänge derzeit an einem MySQL Query für ein Forum, bei dem ich z.b. auf der Übersicht der Boards zunächst alle boards mit name und id auslesen will, dazu aber gleich die threads und antworten zählen möchte die in diesem board getätigt wurden.

    Diese stehen natürlich in einer anderen Tabelle.

    Nun ist meine Frage, wie kann ich diesen Query realisieren (wenn es überhaupt geht) wenn die tabellen

    s_forum_boards
    -> name
    -> id
    u_forum_threads
    u_forum_replys

    heißen?

    Ich habs eben mit dem folgen Query versucht:

    SELECT b.name, b.id, COUNT(t.id) AS tcount, COUNT(r.id) AS rcount FROM s_forum_boards AS b, u_forum_threads AS t, u_forum_replys AS r WHERE b.category='[VOM_SCRIPT_ÜBERGEBENE_CATEGORY]'

    aber auch von der Logik her macht noch kein Sinn aber ich weis einfach auch nicht wies noch gehen soll.

    Jemand eine Idee?

  • eben das wollte ich vermeiden da ich die Datenbank entlasten möchte. Ist es etwa nicht möglich das mit mysql zu regeln ?

  • versuchs mal so

    SQL
    SELECT s_forum_boards.id, s_forum_boards.name, u_forum_replys.reply, u_forum_threads.threads
    FROM (s_forum_boards INNER JOIN u_forum_replys ON s_forum_boards.id = u_forum_replys.id_board) INNER JOIN u_forum_threads ON s_forum_boards.id = u_forum_threads.id_board;

    bin jetzt davon ausgegangen, dass jede tabelle eine eigene id hat und die
    unterforen mit einem fremdschlüssel(id_board) zu der haupttabelle verbunden sind.

  • Da er die Anzahl will würde ich noch COUNT()'s einbauen. ;)

    Ich bin mir gerade auch nicht sicher, wie sich INNER JOIN in Kombination mit Aggregatfunktionen wie COUNT() verhält, wenn keine zugehörigen Einträge gefunden werden. Gegebenenfalls LEFT JOIN verwenden und ifnull() für die COUNT()'s ergänzen:

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Vlllt auch was mit
    LEFT OUTER JOIN basteln


    Wo soll der Unterschied sein, zwischen LEFT JOIN und LEFT OUTER JOIN?

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook