GROUP BY mit HAVING
Saphir
- datenbank
Hallo,
ich bin verwirrt bei folgenden Abfragen.
7.Finden Sie alle Kunden, die mehr als 15 Bestellungen aufgegeben haben (Anzeige: Kunden-Code, Anz_Best, sort. nach Anz_Best)
SELECT `Kunden-Code`, COUNT(`Kunden-Code`) AS Anz_Best
FROM `tblbestellungen`
GROUP BY `Kunden-Code`
HAVING Anz_Best>15
ORDER BY Anz_Best;
9.Finden Sie aus der Tabelle tblKunden alle Länder in denen mindestens 10 Kunden vor-kommen. (Anzeige: Land, Anzahl_Kunden)
SELECT Land, Count(Land) AS Anzahl_Kunden
FROM tblkunden
GROUP BY Land
HAVING COUNT(Land) >= 10
Wieso wird bei der Aufgabe in der HAVING Klausel Anz_Best > 15 geschrieben und bei der Aufgabe 9 COUNT(Land)??
Oder anders formuliert: Wieso wird in der Aufgabe 9 COUNT(Land) praktisch 2 mal geschrieben? Könnte ich da nicht HAVING Anzahl_Kunden schreiben so wie bei Aufgabe 7?
Hallo,
Wieso wird bei der Aufgabe in der HAVING Klausel Anz_Best > 15 geschrieben und bei der Aufgabe 9 COUNT(Land)??
weil das verwendete Datenbankmanagement (DBMS) in der HAVING-Klausel Aliasnamen unterstützt.
Oder anders formuliert: Wieso wird in der Aufgabe 9 COUNT(Land) praktisch 2 mal geschrieben? Könnte ich da nicht HAVING Anzahl_Kunden schreiben so wie bei Aufgabe 7?
im gleichen DBMS: ja.
Der SQL-Standard erlaubt in der HAVING-Klausel keine Aliasnamen, wenn ich mich recht erinnere, und viele DBMS halten sich daran. In solchen DBMS wirft ein Statement wie in Aufgabe 7 einfach einen Syntaxfehler.
Freundliche Grüße
Vinzenz