count und group by ?
Tanja G.
- datenbank
0 Lude0 Tanja G.0 Daniela Koller0 Tanja G.0 Lude0 Daniela Koller0 Lude
Hi,
dies funktioniert:
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv GROUP BY auftragsnummer;
Jetzt möchte ich alle 'anzahl' die >= 2 sind:
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv WHERE anzahl>=2 GROUP BY auftragsnummer
Fehlermeldung:
Unknown column 'anzahl' in 'where clause'
Was muss ich ändern?
Grüßle
Hi,
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv WHERE anzahl>=2 GROUP BY auftragsnummer
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv WHERE count(auftragsnummer)>=2 GROUP BY auftragsnummer
muesste gehen.
Gruss,
Lude
geht leider nicht:
Invalid use of group function
Hi Lude
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv WHERE count(auftragsnummer)>=2 GROUP BY auftragsnummer
muesste gehen.
Nein, das funktioniert ganz sicher nicht. Das Ergebnis des Counts ist noch gar nicht bekannt zu dem Zeitpunkt
wo where ausgeführt wird, deswegen gibt es having. Des
weiteren gehört anzahl nicht in Hochkommas. Des weiteren
wird ja extra ein Alias vergeben, also sollte man es
auch benutzen.
Es müsste also heissen:
SELECT count(auftragsnummer) AS anzahl,
auftragsnummer
FROM archiv
GROUP BY auftragsnummer
HAVING anzahl >= 2
Siehe auch den Tipps und Tricks Artikel zu dem Thema.
http://aktuell.de.selfhtml.org/tippstricks/datenbanken/having/index.htm
Gruss Daniela
*perfekt*
{{{ D A N K E }}}
Hi,
SELECT count(auftragsnummer) AS 'anzahl', auftragsnummer FROM archiv WHERE count(auftragsnummer)>=2 GROUP BY auftragsnummer
muesste gehen.
Nein, das funktioniert ganz sicher nicht. Das Ergebnis des Counts ist noch gar nicht bekannt zu dem Zeitpunkt
wo where ausgeführt wird, deswegen gibt es having.
mein Tipp war schon recht uebel. :-(
Des
weiteren gehört anzahl nicht in Hochkommas.
'anzahl' ist die Zeichenkette, die ausgegeben wird im Spaltenkopf. - Sollte man durchaus in Hochkommata setzen.
Des weiteren
wird ja extra ein Alias vergeben, also sollte man es
auch benutzen.
Ist das denn ein "Alias"? ("select * from table_a ta ..." waere einer)
Es müsste also heissen:
SELECT count(auftragsnummer) AS anzahl,
auftragsnummer
FROM archiv
GROUP BY auftragsnummer
HAVING anzahl >= 2Siehe auch den Tipps und Tricks Artikel zu dem Thema.
http://aktuell.de.selfhtml.org/tippstricks/datenbanken/having/index.htm
Gruss,
Lude
Hi Lude
'anzahl' ist die Zeichenkette, die ausgegeben wird im Spaltenkopf. - Sollte man durchaus in Hochkommata setzen.
Nein, solltest du nicht, das ist kein ordentliches SQL,
es ist keine Zeichenkette sondern ein Bezeichner, bei
gewissen Datenbanken wie Oracle müssen solche Bezeichner
in doppelte Hochkommas ", aber niemals in einfache '.
MySQL mag es akzeptieren, ordentliches SQL ist es nicht.
Des weiteren
wird ja extra ein Alias vergeben, also sollte man es
auch benutzen.Ist das denn ein "Alias"? ("select * from table_a ta ..." waere einer)
Das eine ist ein Tabellenalias, das andere ein Spaltenalias. Es ist übrigens weit mehr als nur eine
Spaltenüberschrift.
Gruss Daniela
Hi, Daniela,
unter MSSQL Server 2000 ist die Verwendung von Spalten-Alias in der HAVING-Klausel nicht erlaubt. - Das Zeug wuerde nicht laufen.
Ansonsten sind Deine Ausfuehrungen moeglicherweise (leider) zutreffend. "Ordentliches" SQL ist tatsaechlich schwer zu lernen; zumindest fuer mich, der immer nur in die Hilfe starrt, statt es einfach fuer immer im Kopf zu behalten.
Gruss,
Lude