Zeilen mit bestimmtem Wert zählen

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

  • Zeilen mit bestimmtem Wert zählen

    Hallo,

    ich habe zwei Tabellen:

    news
    -----------
    id
    titel
    text

    und

    news_kommentare
    -------------------
    id
    news_id
    text
    geschlecht (mögliche Werte sind 'm' oder 'w')


    Nun erzeuge ich eine SELECT-Abfrage, die eine News-Liste
    liefert, wobei zu jeder News auch die Anzahl der dazugehörigen
    Kommentare angezeigt wird.

    SELECT
    news.*,
    COUNT(DISTINCT news_kommentare.id) AS anzahl_kommentare
    FROM news
    LEFT JOIN news_kommentare
    ON
    news_kommentare.news_id = news.id
    GROUP BY news.id

    Nun möchte ich mit dieser Abfrage noch die Anzahl der Kommentare
    erhalten, die von weiblich ("w") geschrieben wurden bzw. herausfinden, ob überhaupt Kommentare von weiblich vorhanden sind.
    Ich will also die Anzahl der Zeilen herausfinden, in denen der Wert "w" im Feld geschlecht steht.
    Wie integriere ich das in meine Abfrage? Die Gesamtzahl (von "m" und "w") der Kommentare soll auf jeden Fall erhalten bleiben.

    Vielen Dank im voraus.

  • #2
    Wenn Du's nicht nach Geschlecht gruppierst ... wird dir die Datenbank wohl kaum die entsprechende Auskunft geben ...
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Verdammt schade

      Warum ist solch eine Funktion nicht in MySQL enhalten?
      So in etwa wie COUNT(news_kommentare. geschlecht = 'w'), oder ist
      mein Denkansatz völlig falsch und ich kann das irgendwie anders lösen?

      Kommentar


      • #4
        Original geschrieben von sprengstoff
        So in etwa wie COUNT(news_kommentare. geschlecht = 'w'), oder ist
        mein Denkansatz völlig falsch und ich kann das irgendwie anders lösen?
        zweiter Query mit Key auf das Geschlecht und COUNT(*) dürfte eh schneller gehen ^^,

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

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

        Kommentar


        • #5
          Original geschrieben von sprengstoff
          Verdammt schade

          Warum ist solch eine Funktion nicht in MySQL enhalten?
          So in etwa wie COUNT(news_kommentare. geschlecht = 'w'), oder ist
          mein Denkansatz völlig falsch und ich kann das irgendwie anders lösen?
          Warum, wenn schon so kaput nicht einfach mit SUM()

          SUM(IF(news_kommentare.geschlecht = 'w', 1, 0)) weiblich, SUM(IF(news_kommentare.geschlecht = 'w', 0, 1)) maennlich
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            VIELEN DANK goth

            Ich habe den Query jetzt wie folgt erweitert:

            PHP-Code:
            SELECT
            news
            .*,
            COUNT(DISTINCT news_kommentare.id) AS anzahl_kommentare,
            SUM(IF(news_kommentare.geschlecht 'w'10)) AS anzahl_kommentare_w,
            SUM(IF(news_kommentare.geschlecht 'm'10)) AS anzahl_kommentare_m
            FROM news
            LEFT JOIN news_kommentare
            ON
            news_kommentare
            .news_id news.id
            GROUP BY news
            .id 
            So bekomme ich die Anzahl der Kommentare von jedem Geschlecht heraus.
            Füge ich nach GROUP noch HAVING anzahl_kommentare_m/w > 0 ein,
            kann ich sogar noch erreichen, dass nur News ausgegeben werden, zu denen es mindestens ein Kommentar vom gewünschten Geschlecht gibt.

            Also genau das was ich wollte.

            Danke nochmal.
            Zuletzt geändert von sprengstoff; 16.12.2005, 09:20.

            Kommentar

            Lädt...
            X