mehrer count() mit versch. Bedingungen

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

  • mehrer count() mit versch. Bedingungen

    Hallöchen...


    Meiner einer sitzt mal wieder vor einem Problem an welches ich beim erstellen damals noch nicht dachte.


    Folgendes ist geplant:
    Eine kleine Statistik über Einträge in einer Tabelle. Dabei stellt sich mir aber das Problem, dass diese Einträge in einer Tabelle und nicht in 2 versch. Gespeichert sind. Ich möchte nun aus dieser Tabelle 3 versch. count() haben - Gesamtzahl, Gut-Zahl, Schlecht-Zahl. Bisher habe ich es so gelöst, dass ein count() ausgegeben wird (Gesamtzahl).
    Dieser sieht wie folgt aus;
    PHP-Code:
    $sql "SELECT COUNT( nick ) AS wieviele, y
    FROM `x` 
    GROUP BY `y` 
    ORDER BY `wieviele` DESC"

    Die Tabelle ist wie folgt aufgebaut
    Id, nick, y, frei, date

    Wichtig hierbei ist, dass in "y" immer der eintragende User steht (daher das GROUP BY), und in "frei" die Wert 0, 1 oder 2 stehen. Und genau um das "frei" geht es mir. Ich möchte bei der Statistik stehen haben, wieviele da auf 1 und wieviele auf 2 stehen - natürlich in selbiger Reihenfolge wie die Gesamtzahl.

    Gibt es da eine Möglichkeit das mit einer einzigen Abfrage zu schaffen oder muss ich tatsächlich mehrere Abfragen dafür starten? Die Tabelle beherrbergt zur Zeit über 2500 Einträge und steigt täglich, daher wäre eine einzelne Abfrage sparsamer.


    Gruss und danke! :-)
    Zuletzt geändert von medium22; 28.07.2007, 21:57.

  • #2
    Re: mehrere count() mit versch. Bedingungen

    COUNT(IF(frei=0,true,null)) frei0, COUNT(IF(frei=1, true, null)) frei1
    oder auch mit sum
    SUM(frei=0) frei0, SUM (frei=1) frei1

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

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

    Kommentar


    • #3
      Danke!


      Mit COUNT(IF( ... bekomm ich zwar fehlermeldungen aber mit SUM( .. funktioniert das wunderbar und hat auch den gewünschten Effekt!



      medium22

      Kommentar

      Lädt...
      X