.NET C# Java Javascript Exception

 | 
Frage stellen Fragen Themen Mitglieder Abzeichen RSS-Feed
4
Wie funktioniert der Count(*) Befehl bei Access.
Woher weiss "der Computer" was er zählen soll wenn doch in der Klammer ein Stern und keine konkrete zu zählende Spalte steht?
06.11.09
Bromdampf 95 2
Kommentieren - Für Rückfragen oder Anmerkungen
4 Antworten
8
Hallo,

count(*) gibt die Anzahl von Elementen in einer Gruppe zurück. Dieses betrifft auch die NULL-Werte und/oder Duplikate.
Gezählt werden hier die Tupel (Datensätze).
06.11.09
Mario Priebe 1,3k 1 7
Kurz und Informativ. :)
darkdust 17.11.09
4
Wir bereits geantwortet, werden hier schlicht Datensätze gezählt. count(*) ist deshalb auch etwas ganz Besonderes, denn es gibt zu Recht eben kein sum(*), min(*) oder andere Aggregate zusammen mit *.

Deshalb wird count(*) von einigen DB Systemen in Zusammenhang mit einer leeren where clause und ohne join optimiert und gibt einfach die Anzahl der Datensätze der Tabelle zurück, die häufig in den Metadaten zu finden ist. D.h. ein 'select count(*) from foo' kann auch bei Millarden Datensätzen innerhalb von µs beantwortet werden, während ein 'select count(bar) from foo' vielleicht Minuten benötigt, obwohl das Ergebnis das selbe ist.
0
Ahhh OK! Super vielen Dank für die rasche Hilfe!
08.11.09
Bromdampf 95 2
2
Bitte den entsprechenden Beitrag mit den grünen Haken als hilfreich markieren ;)
Mario Priebe 08.11.09
1
Und, wenn wir gerade dabei sind, fürs nächste Mal: "Rückfragen oder Anmerkungen zur Frage selbst sollten als Kommentare unter die Frage geschrieben werden.". ;-)
Blauesocke 08.11.09
0
Das COUNT(*) die Anzahl aller der Elemente incl. derer die NULL-Werte beinhalten ist ja schon erwähnt worden.

COUNT(foo) allerdings zählt nur dann das Element mit, wenn foo nicht NULL ist. Insbesondere dann wichtig wenn man unter anderem die Zahl der Elemente ermitteln möchte, die aber über einen LEFT OUTER JOIN mit in der Ergebnismenge sind!

Mit anderen Worten, folgende beiden Ergebnisse für die Aliase "countall" und "countfoo" können (müssen aber nicht) unterschiedlich sein:

SELECT COUNT(*) AS countall, COUNT(bar2.foo) AS countfoo
FROM bar1
LEFT OUTER JOIN bar2
ON bar1.x = bar2.y
05.03.10
Vash 428 1 4
Deine Antwort
Entweder einloggen... ...oder ohne Wartezeit registrieren
Name
Passwort
Passwort wiederholen
E-Mail
Geworben von


Login mit OpenID

Mit einem OpenID-Account kannst Du dich auf allen Webseiten anmelden, die OpenID unterstützen. Du hast bereits ein Benutzerkonto bei einem der folgenden Provider? Dann kannst Du dich direkt hier damit registrieren.


OpenID-Provider anklicken: