MySQL - count() in where-Klausel nicht möglich!?!?
André Mantz
- datenbank
0 Ilja
Hallo,
heute mal eine Frage an die SQL-Profis.
In einer Tabelle werden die User, welche Zugriff auf mein System haben gespeichert. Pro User ein Datensatz. In jedem Datensatz steht auch, mit welcher IP der User sich zuletzt eingeloggt hat.
Das ganze sieht dann etwa so aus:
Tabelle 'User'
+----------+---------------+-----------------+
| Name | weitere Daten | letzte IP |
+----------+---------------+-----------------+
| Herbert | ... | 123.123.123.123 |
| Hans | ... | 245.245.245.245 |
| Frank | ... | 245.245.245.245 |
| Thomas | ... | 123.123.123.123 |
| Dieter | ... | 245.245.245.245 |
| Jens | ... | 100.100.100.100 |
....
Nun möchte ich die IP´s abfragen, unter denen sich mehrere verschiedene User eingeloggt haben. Mein Wunschergebniss sieht so aus:
+-----------------+--------+
| IP | Anzahl |
+-----------------+--------+
| 123.123.123.123 | 2 |
| 245.245.245.245 | 3 |
+-----------------+--------+
2 rows in set
Die IPs, unter denen sich nicht mehrere User eingeloggt haben sollen also nicht mit ausgegeben werden.
Ich hab dann mal ganz naiv folgendes probiert:
-> select IP, count(*) as Anzahl
-> from User
-> where Anzahl > 1
-> group by IP;
Tja, leider krieg ich dann
-> ERROR 1054: Unknown column 'Anzahl' in 'where clause'
Lasse ich den Alias (as Anzahl) weg und setze in die where-Klausel direkt count(*) rein kommt dieser Fehler:
-> ERROR 1111: Invalid use of group function
Wer kann mir helfen. Irgendwie steh ich grad auf dem Schlauch. Mit welcher Abfrage könnte ich mein Wunschergebnis erzielen?
Ach ja, das ganze soll übrigens auf MySQL 3.23.56-nt laufen.
Danke für eure Hilfe!
Gruß, André
yo,
anstelle
-> where Anzahl > 1
benutze für einschränkungen in den gruppierungen.
HAVING COUNT (*) > 1
Ilja
Hallo Ilja
benutze für einschränkungen in den gruppierungen.
HAVING COUNT (*) > 1
Danke, genau das war es, worauf ich nicht gekommen bin.
Gruß, André