Falsche Ergebnisse bei mehrfachem JOIN

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

  • Falsche Ergebnisse bei mehrfachem JOIN

    Hallo,

    ich habe folgende Datenbank-Struktur:

    news
    - id
    - titel
    - nachricht
    - time_create

    news_replies
    - id
    - news_id
    - titel
    - nachricht

    news_votes
    - id
    - news_id
    - user_id

    Ich möchte nun für eine Übersichts-Seite alle News auslesen und dazu direkt jeweils die Anzahl der Antworten und die Anzahl der Votes.

    Mein Query:

    Code:
    SELECT a.id, a.titel, COUNT(b.id) AS reply_count, COUNT(c.id) AS vote_count 
    FROM news AS a 
    LEFT JOIN news_replies AS b 
    ON a.id=b.news_id 
    LEFT JOIN news_votes AS c 
    ON a.id=c.news_id 
    GROUP BY a.id 
    ORDER BY a.time_create DESC
    Leider kommen da falschen Zahlen für reply_count und vote_count raus... Hinter denen sich auch nicht wirklich ein Schema erkennen lässt. Manchmal einfach 3 zuviel, dann doppelt so viel...

    Hat jemand einen Tipp?

    Gruß und Dank im Vorraus

  • #2
    Wieso benutzt du denn nen LEFT Join, mit nem INNER sollte das so funktionieren wie du es planst

    Kommentar


    • #3
      bei INNER JOIN werden mir nur noch die news angezeigt, die auch antworten / votes haben...

      Kommentar


      • #4
        Keiner eine Idee?

        Kommentar


        • #5
          Mit JOIN fällt mir spontan keine Lösung ein... mit Subquery für eines der beiden COUNTs würde es gehen.
          Ich würde aber in der news-Spalte zwei neue Spalten anlegen und da die Anzahl zwischen speichern. Ist für die Performance besser, und die kann man eher an derart einfachen Dingen sparen, als an Queries die wirklich komplex sind.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X