MYSQL Bedingung in Abfrage
-
Hallo,
folgendes Problem:
Ich habe eine Tabelle:
Eigenschaft | Geld | NameDas Feld Eigenschaft ist immer 0 oder 1, Geld ein Decimal-Wert und Name ein VARCHAR.
Auf dieser Tabelle führe ich folgende Abfrage aus:
SELECT SUM(Eigenschaft), SUM(GELD) from Tabelle GROUP BY Name
Und bekomme als Ergebnis wie oft das Eigenschaft-Feld 1 ist, und den Gesamtgeldbetrag für jeden einzelnen Namen.
Soweit so gut.
Jetzt benötige ich aber noch eine Variable die mir angibt wie oft das Eigenschaft-Feld = 1 UND das Geld-Feld > 0 ist.
Kann man so eine Bedingung in die Abfrage einbauen?
-
Ja, in der SELECT-Anweisung gibt es auch noch den Abschnitt "Where":
SELECT Count(Eigenschaft),Name FROM Tabelle WHERE Eigenschaft=1 AND Geld>0 GROUP BY Name
(ungetestet)
-
OK, so bekomme ich aber nicht die sum(eigenschaft) und sum(Geld).
Es müßte denke ich ein Mix aus deiner und meiner Abfrage sein.
Ich weiß aber nicht ob sowas geht.
-
sowas wie COUNT(IF(Eigenschaft = 1 AND Geld > 0, 1, NULL))?
-
ja genau, sowas brauch ich.
Aber darf man da if gebrauchen?
-
Foxy79 schrieb:
OK, so bekomme ich aber nicht die sum(eigenschaft) und sum(Geld).
Es müßte denke ich ein Mix aus deiner und meiner Abfrage sein.
Ich weiß aber nicht ob sowas geht.Na gut, dann nimmst du halt deine Spaltenauswahl in den Select rein:
SELECT Sum(Eigenschaft),Sum(Geld),Name FROM Tabelle WHERE Eigenschaft=1 AND Geld>0 GROUP BY Name
-
so bekomme ich aber nicht die Zeilen wo Geld < 0 ist.
Ich brauche die gesammt Anzahl über alle Zeilen, UND die Anzahl wie oft Geld > 0.
Das ist das große Problem.
Oder kann man sowas nur mit 2 Abfragen nach ein ander lösen?
-
Was meinst Du mit "darf man da IF gebrauchen"? Laut Handbuch ja, natürlich, sonst hätte ich es nicht vorgeschlagen
Im MySQL-Handbuch steht jedenfalls nicht, dass es eine MySQL-Erweiterung ist.
-
Ich wusste nicht das es IF auch bei MYSQL gibt
Damit kann man es dann wahrscheinlich realisieren.
Ich habe leider kein Handbuch
-
Foxy79 schrieb:
Ich habe leider kein Handbuch
Ich auch nicht, jedenfalls kein gedrucktes. Aber wir haben ja alle Internet, gell?