COUNT() und JOINS

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.
Working...
X