Kann ein GROUP BY mehrere COUNT() haben?
bearbeitet von Rolf BHallo Linuchs,
du stellst zwei Fragen. (1) COUNT, (2) Trefferzahl.
Zu 1: `COUNT(*)` zählt alle Sätze in der Table, oder bei Einsatz von `GROUP BY` in der Gruppe. `COUNT(feldname)` tut das auch, *nur ohne die NULL Werte*. `COUNT(DISTINCT feldname)` zählt alle unterschiedlichen Werte dieses Feldes in der Table, oder bei Einsatz von `GROUP BY` in der Gruppe. Zumindest ist das in meinem lokalen Spielzeug MySQL 5.6 so (bei dem ich seit Ewigkeiten zu faul zum updaten bin)
(Kursiver Teil nach Dedlfix' Hinweis ergänzt)
Zu 2: Die Trefferzahl erhöht sich, weil `AND` stärker bindet als `OR`. D.h. wenn Du auskommentierst, steht da `WHERE X AND Y AND Z`. Wenn Du die Zeile hinzunimmst, steht da `WHERE (X AND Y AND Z AND A) OR B`. Die Klammer steht da nicht, aber MySQL denkt sie sich. Vermutlich möchtest Du `WHERE X AND Y AND Z AND (A OR B)`.
_Rolf_
--
sumpsi - posui - obstruxi
Kann ein GROUP BY mehrere COUNT() haben?
bearbeitet von Rolf BHallo Linuchs,
du stellst zwei Fragen. (1) COUNT, (2) Trefferzahl.
Zu 1: `COUNT(*)` zählt alle Sätze in der Table, oder bei Einsatz von `GROUP BY` in der Gruppe. `COUNT(feldname)` tut das auch. `COUNT(DISTINCT feldname)` zählt alle unterschiedlichen Werte dieses Feldes in der Table, oder bei Einsatz von `GROUP BY` in der Gruppe. Zumindest ist das in meinem lokalen Spielzeug MySQL 5.6 so (bei dem ich seit Ewigkeiten zu faul zum updaten bin)
Zu 2: Die Trefferzahl erhöht sich, weil `AND` stärker bindet als `OR`. D.h. wenn Du auskommentierst, steht da `WHERE X AND Y AND Z`. Wenn Du die Zeile hinzunimmst, steht da `WHERE (X AND Y AND Z AND A) OR B`. Die Klammer steht da nicht, aber MySQL denkt sie sich. Vermutlich möchtest Du `WHERE X AND Y AND Z AND (A OR B)`.
_Rolf_
--
sumpsi - posui - obstruxi