Zählen wie oft ein Wert von 3 in einer Spalte zu finden ist

PostmanX

Mitglied
Moin Moin,

So sieht mein momentaner SQL befehl sieht so aus:
SELECT sum( hits ) AS summa, COUNT( * ) AS ordnerc, COUNT( stat =1 ) AS onc, COUNT( stat =2 ) AS offc, COUNT( stat =0 ) AS ncc FROM `directorys`
Wie man vllt sehen kann will ich Zählen, wie offt ein bestimmter Wert in einer Spalte in einer Tabelle zu finden ist. Es soll halt gezählt werden wie offt die "1" in der spalte stat ist und gespeichert werden, außerdem soll gezählt werden, wie offt in der gleichen spalte der Wert "2" zu finden ist und gespeichert werden. Und genau so mit 0. Ich dachte mein befehl wäre genial, weil ich damit schnell eine Statistik machen kann.

Aber vllt weiß einer wie es dennoch geht :)

Danke
 
Hi!

Bitte nicht schlagen, wenn es totaler Blödsinn ist (kann es gerade nicht ausprobieren):
Kannst Du nicht eine IF-Abfrage verwenden und diese Summieren?
SQL:
SELECT SUM(IF(stat==0, 1, 0)) AS ncc FROM `directorys`
...?

Liebe Grüße,
Mark.
 
Ja ne, das Problem ist das ich immer den die Anzahl aller Elemente in der Tabelle. Also das = bringt gar nichts :)

Aber Danke für die Idee
 
Zuletzt bearbeitet:
Hi,

hast Du Marks Vorschlag überhaupt mal ausprobiert? Das sollte nämlich genau das liefern, was Du möchtest. Funktioniert übrigens auch ohne IF: SUM(stat = 1) etc.

Ansonsten müsstest Du Dein Problem mal richtig beschreiben.

Ja ne, das Problem ist das ich immer den die Anzahl aller Elemente in der Tabelle.

Wie meinen :confused:

LG
 
Hi,

hast Du Marks Vorschlag überhaupt mal ausprobiert? Das sollte nämlich genau das liefern, was Du möchtest. Funktioniert übrigens auch ohne IF: SUM(stat = 1) etc.

Ansonsten müsstest Du Dein Problem mal richtig beschreiben.



Wie meinen :confused:

LG
Ja türlich, hat aber einen syntax fehler ausgegeben. Aber wie kann das Funktionieren, ich will ja herrausfinden wie viele Einträge stat =1 sind wie viele stat 2 und wie viele 3. Damit das geht muss ich die werte ja in 3 Variablen haben.

So zu meinen Befehl nochmal, ich habe z.b. 300 einträge. 100 mit stat=1, 100 mit stat = 2 und 100 mit stat =3. Natürlich weiß ich nicht die genau anzahl. Jetzt will ich wissen, wie viele Einträge ich jetzt von was habe, und dass möglichst in einer abfrage. Das Problem ist aber dass count() stat=1,0,2 irgnoriert und immer 300 ausgibt bei onc,offc, un ncc, also die Anzahl aller einträge die ich schon in ordnerc habe

Ich hoffe es ist klarer geworden :)
 
Hi,

Ja türlich, hat aber einen syntax fehler ausgegeben.

Den hättest Du doch beheben oder zumindest hier posten können. Ich tippe auf das "==". Ersetze es durch "=".

So zu meinen Befehl nochmal, ich habe z.b. 300 einträge. 100 mit stat=1, 100 mit stat = 2 und 100 mit stat =3. Natürlich weiß ich nicht die genau anzahl. Jetzt will ich wissen, wie viele Einträge ich jetzt von was habe, und dass möglichst in einer abfrage.

Dann haben wir Dich richtig verstanden.

Das Problem ist aber dass count() stat=1,0,2 irgnoriert und immer 300 ausgibt bei onc,offc, un ncc, also die Anzahl aller einträge die ich schon in ordnerc habe

Du sollst das Ergebnis des Ausdrucks "stat=1" (0 oder 1) summieren: SUM(stat=1)

Jetzt klar?

LG
 
Hi,



Den hättest Du doch beheben oder zumindest hier posten können. Ich tippe auf das "==". Ersetze es durch "=".



Dann haben wir Dich richtig verstanden.



Du sollst das Ergebnis des Ausdrucks "stat=1" (0 oder 1) summieren: SUM(stat=1)

Jetzt klar?

LG
Ja jetzt gehts, nur habe ich ja jetzt das problem ist, dass ich jetzt aber nur eine vairbale habe und nicht feststellen kann von welchen Wert ich wie viele Einträge habe.

SELECT SUM( IF( stat =0, 1, 0 ) ) AS ncc
FROM `directorys`
Gibt 2 aus. Das entspricht der Anzahl der Einträge mit dem Wert 0 bei stat
SELECT SUM( IF( stat =0, 1, 2 ) ) AS ncc
FROM `directorys`
Würde für mich mehr sinn machen, gibt aber ne Zahl aus die ich nicht zuweisen kann, weil es nicht die max anzahl der einträge entsprich oder von stat 1 und 2

Edit:
Ahh jetzt hab ich das verstanden :)

SELECT SUM( IF( stat =0, 1, 0 ) ) AS ncc, SUM( IF( stat =1, 1, 0 ) ) AS onc, SUM( IF( stat =2, 1, 0 ) ) AS offc
FROM `directorys`

Jau, dass geht. Super, dass Ihr mir noch so geholfen habt, auch wenn ich mich dabei dumm angestellt habe :)

Danke an alle :)
 
Zuletzt bearbeitet:
Zurück