[SQL allgemein] SQL-Anweisung mit COUNT(*)

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

  • [SQL allgemein] SQL-Anweisung mit COUNT(*)

    Hallo php resource!

    ich habe folgendes Problem:
    Bei einem Newssystem kann man kommentare abgeben. Dabei können 3 Fälle eintreten:
    1. News wurden geschrieben, aber es bestehen noch keine Kommentare
    2. News wurden geschrieben und es bestehen x Kommentare
    3. News wurden geschrieben, aber Kommentare sind verboten

    Wenn ich nun alle news ausgeben will + Anzahl der Kommentare bekomme ich ständig probleme :/

    Bei der Variante unten werden alle News mit Kommentaren ausgegeben und alle News, wo Kommentare verboten sind. Allerdings mit der Kommentaranzahl aller vorhandener Kommentare, was über 10.000 sind.

    Tabelle News:

    id---titel---inhalt---datum---autor---comment_erlaubt

    Tabelle comments

    id---inhalt---datum---autor---id_news

    SELECT
    news.titel,
    news.datum,
    news.datum,
    news.autor,
    COUNT(comments.id)
    FROM
    news,comments
    WHERE
    news.datum BETWEEN 1161122400 AND 1161208799 AND
    (comments.id_news = news.id OR news.comment_erlaubt = 0)
    GROUP BY news.datum
    ORDER by news.datum desc
    LIMIT 0,30;
    Thx 4 Help!

    mfg zerni
    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
    - ...und solche Behauptungen in "falsches Resourcenmanagement"

  • #2
    Dein Join ist meiner meinung nach falsch gesetzt weil Du das OR mit in die klammer nimmst
    Zuletzt geändert von MelloPie; 24.10.2006, 08:23.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      äh ne der müsste stimmen, hat denn jemand eine Ahnung ob ich das mit IF bzw CASE abfragen machen könnte?

      Weil ich will alle News in einer bestimmten Zeit haben und diese sollen kommentare haben oder es soll verboten sein, oder sie haben keine :/

      wäre es besser wenn ich das in 2 einzelne abfragen packe?

      das wollte ich eigentlich nicht, da die news sehr oft aufgerufen werden und ~200 User zur gleichen Zeit auf der Webseite surfen.
      Zuletzt geändert von zerni; 23.10.2006, 13:50.
      Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
      - ...und solche Behauptungen in "falsches Resourcenmanagement"

      Kommentar


      • #4
        Als Lösung habe ich nun folgendes gemacht:

        PHP-Code:
        Tabelle News:

        id---titel---inhalt---datum---autor---comment_erlaubt---comment_count

        Tabelle comments

        id
        ---inhalt---datum---autor---id_news 
        und wenn ein Kommentar geschrieben wird, was nicht so oft der Fall ist, zählt er comment_count um 1 hoch!
        es ginge zwar sicher auch mit joins, aber dieses ist performanter beim auslesen
        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
        - ...und solche Behauptungen in "falsches Resourcenmanagement"

        Kommentar

        Lädt...
        X