COUNT() und JOINS

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

  • COUNT() und JOINS

    Also ich wollte eine Übersicht für ein Forum erstellen.
    Hatte nach langen Knobeln auch eine Lösung gefunden, aber zur Sicherheit wollte ich diese Lösung zeigen.

    Ich wollte eigendlich sowas abfragen:
    PHP-Code:
            $sql "SELECT
                        "
    .FOREN.".id, 
                        "
    .FOREN.".name, 
                        MAX("
    .ANSWERS.".created) AS last_datum,
                        count("
    .THREADS.".id) AS thread_anzahl
                    FROM "
    .FOREN.
                    LEFT JOIN "
    .ANSWERS." ON (".FOREN.".id = ".ANSWERS.".fid)   
                    LEFT JOIN "
    .THREADS." ON (".FOREN.".id = ".THREADS.".fid)                             
                    WHERE
                        "
    .FOREN.".gid=".$gruppe."
                    GROUP BY 
                        "
    .FOREN.".id   
                    ORDER BY last_datum DESC"

    Das scheiterte aber bei der Anzeige der Gesamtanzahl der Threads.
    Mach ich hingegen:
    PHP-Code:
            $sql "SELECT
                        "
    .FOREN.".id, 
                        "
    .FOREN.".name, 
                        MAX("
    .ANSWERS.".created) AS last_datum,
                        count(distinct("
    .THREADS.".topic)) AS thread_anzahl
                    FROM "
    .FOREN.
                    LEFT JOIN "
    .ANSWERS." ON (".FOREN.".id = ".ANSWERS.".fid)   
                    LEFT JOIN "
    .THREADS." ON (".FOREN.".id = ".THREADS.".fid)                             
                    WHERE
                        "
    .FOREN.".gid=".$gruppe."
                    GROUP BY 
                        "
    .FOREN.".id   
                    ORDER BY last_datum DESC"

    Klappt es. Aber würden 2 Threads den gleichen Namen haben, würde da ja ein Fehler auftretten.
    Warum geht das einfache count(id) nicht bei dieser Abfrage?
    Er liefert mir mit count(id) die Anzahl 418 obwohl es nur 10 sind.
    Gut geraten ist halb gewußt.
Lädt...
X