mySQL COUNT
Linuchs
- mysql
0 gelöst
Linuchs0 Tabellenkalk0 TS- humor
- mysql
0 dedlfix0 Tabellenkalk0 dedlfix0 Tabellenkalk0 dedlfix
0 Tabellenkalk0 dedlfix
Moin,
ich möchte Datensätze zählen, wenn der Wert eines Feldes größer ist als 0 (Ziffer 0). Dieses habe ich versucht in der Hoffnung, dass NULL nicht gezählt wird …
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# locale Tabelle eventbuchungen
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT
COUNT(*) anzahl_saetze
,MAX(last_modified) last_modified
,COUNT(IF gebuchte_event_id = 0, NULL, gebuchte_event_id) anzahl_buchungen
FROM tm_eventbuchungen
WHERE owner_id = 16
... und bekomme den Fehler
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'gebuchte_event_id = 0, NULL, gebuchte_event_id) anzahl_buchungen FROM tm_even' at line 7
Wie kann ich den Wert 0 beim Zählen ausschließen?
Linuchs
die Beschreibung eines Problems ist ja schon die halbe Lösung.
Ich muss Klammmern beim IF() setzen.
Linuchs
Hallo,
Ich muss Klammmern beim IF() setzen.
Für die If-Funktion hast du Recht, aber ist das wirklich das was du suchst? Warum setzt du ins Count() nicht einfach ein WHERE Bedingung > 0
?
Gruß
Kalk
Hello,
Ich muss Klammmern beim IF() setzen.
Für die If-Funktion hast du Recht, aber ist das wirklich das was du suchst? Warum setzt du ins Count() nicht einfach ein
WHERE Bedingung > 0
?
Vielleicht hat er auch negative Buchungen?
*scnr*
Liebe Grüße
Tom S.
Tach!
Warum setzt du ins Count() nicht einfach ein
WHERE Bedingung > 0
?
Bist du sicher, dass das erlaubte Syntax ist?
dedlfix.
Hallo,
Bist du sicher, dass das erlaubte Syntax ist?
Jetzt wo du fragst, natürlich nicht mehr. Aber wäre nicht trotzdem der zu gehende Weg, erstmal per where die Datensätze einschränken und die dann per count(*) zu zählen?
Gruß
Kalk
Tach!
Aber wäre nicht trotzdem der zu gehende Weg, erstmal per where die Datensätze einschränken und die dann per count(*) zu zählen?
Er will ja beides zählen, die uneingeschränkten auch, und da kann er die Menge nicht im WHERE verringern. Nur eine zweite Query ginge dann noch, aber das muss ja nicht sein.
dedlfix.
Hallo,
Er will ja beides zählen
Woher weißt du das?
Gruß
Kalk
Tach!
Er will ja beides zählen
Woher weißt du das?
Seine SELECT-Klausel hat es mir verraten. Da stehen zwei COUNT() drin.
dedlfix.
Hallo,
Warum setzt du ins Count() nicht einfach ein
WHERE Bedingung > 0
?Bist du sicher, dass das erlaubte Syntax ist?
Wenn ich die Referenz richtig verstehe, müsste Count('Feld' > 0)
gehen.
Gruß
Kalk
Tach!
Wenn ich die Referenz richtig verstehe, müsste
Count('Feld' > 0)
gehen.
'Feld' > 0 liefert true (1) oder false (0), aber nicht NULL. Und NULL oder nicht ist das Kriterium bei COUNT(). Man kann aber statt IF() wie folgt abkürzen: COUNT(NULLIF('Feld', 0))
dedlfix.
Hallo,
'Feld' > 0 liefert true (1) oder false (0), aber nicht NULL. Und NULL oder nicht ist das Kriterium bei COUNT(). Man kann aber statt IF() wie folgt abkürzen:
COUNT(NULLIF('Feld', 0))
ahja, jetzt weiß ich wieder, warum ich bisher mehrere große Bögen um Datenbankgeschichten gemacht habe…
Gruß
Kalk