Zählen von doppelten Einträgen
Das zählen von doppelten Einträgen wird wichtig, wenn die Tabellenstruktur nicht optiomal gewählt wurde “unique” oder “Primary”, oder andere Datenbanken Importiert werden mussten um diese dann auszuwerten. Hier können wir herausfinden wie oft eine Person in der Tabelle existiert
Nehmen Wir an wir haben eine Tabelle mit folgenden Inhalt:
> SELECT * FROM tabelle1 ----------------------------- | id | name | staus | ----------------------------- | 1 | Frank | 3 | | 2 | Anna | 3 | | 3 | Marie | 3 | | 4 | Otto | 3 | | 5 | Henry | 2 | | 6 | Frank | 3 |
Die Abfrage würde folgendes Ergebniss liefern:
> SELECT id,name,staus AS sta,COUNT(*) as anz FROM tabelle1 WHERE sta = 3 GROUP by name; --------------------------------- | id | name | sta | anz | --------------------------------- | 1 | Frank | 3 | 2 | | 2 | Anna | 3 | 1 | | 3 | Marie | 3 | 1 | | 4 | Otto | 3 | 1 |
Durch die Group Funktion wurden alle Zeilen die den gleichen Namen “name” haben zu einer Zeile zusammengefasst, und mittels COUNT(*) die Anzahl der zusammengefassten Zeilen gezählt.
WICHTIG !!
Die erste gefundene Zeile wird behalten und nur der Wert “anz” also COUNT(*) erhöht.
Dazu mal ein anderen Bespiel.
> Select * FROM tabelle1 WHERE status = 3; -------------------------------------- | id | vorname | name | status | -------------------------------------- | 1 | Frank | Müller | 3 | | 2 | Anna | Stein | 3 | | 3 | Marie | Olsan | 3 | | 4 | Otto | Walks | 3 | | 5 | Henry | Maskar | 3 | | 6 | Frank | Polar | 3 |
> SELECT id,vorname,name,staus AS sta,COUNT(*) as anz FROM tabelle1 WHERE sta = 3 GROUP by vorname; ----------------------------------------- | id | vorname | name | sta | anz | ----------------------------------------- | 1 | Frank | Müller | 3 | 2 | | 2 | Anna | Stein | 3 | 1 | | 3 | Marie | Olsan | 3 | 1 | | 4 | Otto | Walks | 3 | 1 | | 5 | Henry | Maskar | 3 | 1 |
Wie in deisem Beispiel zu sehen ist, wurde der Vorname “Frank” 2x gefunden anz=2, jedoch der erste Name “Müller” wurde hierbei behalten.
Mittwoch, 15. Februar 2012 23:11
Tolle Hinweise! Ich werde mich damit in Zukunft mehr auseinandersetzen! Warte auf weitere Posts!