dedlfix: Frage zu Group und Count

Beitrag lesen

Hi!

In einer Tabelle meiner mysql-Datenbank gibt es mehrere Datensätze, bei denen sich in der Spalte 'nummmer' eine identische Zahl befindet.
Beispiel:
nummer - name - strasse  -  telefon
445      Meier  Sesamstr.1  1234
378      Holz   Allestr.5   4545
445      Meier  Sesamstr.1  1234

Anscheinend nicht nur das, sondern auch die restlichen Daten.

Bei der Ausgabe aller Datensätze möchte ich nur die Zeilen ausgeben, bei denen es sich um eine unterschiedliche Nummer handelt. So werden doppelte und dreifache Zeilen vermieden. Also 'meier' soll nur einmal ausgegeben werden.

Das mache ich über diese select-Anweisung:
"SELECT nummer,browser,zeitpunkt,ziel FROM tao_statistik GROUP BY nummer"

Welchen Zusammenhang gibt es zwischen "browser,zeitpunkt,ziel" und "name - strasse - telefon" oder anders: zwischen dieser Abfrage und obiger Tabelle? Angenommen, die obige Tabelle ist des Beispiels wegen gewählt und die Spalten der Abfrage sind nur nicht an das Beispiel angepasst, dann geht solch eine Abfrage bei anderen DBMSen nicht, da bei der Gruppierung nur über nummer, das DBMS nicht weiß, aus welchem Datensatz es die anderen Werte nehmen soll. Die könnten ja durchaus auch verschieden sein. MySQL lässt solche Abfragen zu und nimmt dann einfach irgendeinen Datensatz. Wenn dir das genehm ist, dann kannst du das so lassen.

Die Ausgabe funktioniert soweit, jetzt aber möchte ich die jeweilige Anzahl der mehrfach vorgekommenen bestenfalls beim Select ermitteln, also wie oft der 'meier' vorkam.

Dann müsstest du über den Namen und nicht über die Nummer gruppieren. Es sei denn wiederum, dass unter einer Nummer immer derselbe Name steht, dann passt das so. Nun müsste eigentlich nur noch ein COUNT(*) zur Aufzählung der Felder hinzugefügt werden.

Also, wie zähle ich bereits beim Select und der Gruppierung die mehrfach vorkommenden Nummern?

Du kannst nur alles zählen. Wenn du jedoch nur die mehrfachen in der Ausgabe haben möchtest, kannst du mit einem HAVING COUNT(*) > 1 die Ergebnismenge auch noch nach der Gruppierung einschränken.

Lo!