ich möchte in einer Access 2000 Datenbank eine Anfrage formulieren, die folgendermaßen aussehen soll:
SELECT D,Karte,COUNT(DISTINCT Code)
FROM Daten
GROUP BY D,Karte;
(Primärschlüssel in der Tabelle Daten sind D und Karte. Es soll angegeben werden, wie viele unterschiedliche Codes jeder Eintrag besitzt)
Das müsste ja in SQL-Syntax soweit stimmen, aber ich habe gelesen (und auch vorhin beim Ausprobieren festgestellt), dass Access die Formulierung COUNT DISTINCT nicht versteht.
Deshalb nun meine Frage: Wie kann ich die oben genannte Anfrage so umformulieren, dass Access etwas damit anfangen kann? z.B. mit einer Subquery und HAVING müsste es doch sicherlich funktionieren. Ich probiere aber schon ewig herum und komme nicht drauf.
hoppla, nochmal genauer bzw. korrekter formuliert.
Hallo Christian,
Dankeschön für Deinen Hinweis. Du hast Recht, ich habe eine Angabe vergessen:
D und Karte sind lediglich 2 von den 3 Bestandteilen des Primärschlüssels.
Also mal ausführlicher: Die Tabelle Daten besteht aus den Spalten
D
Karte
TeilNr
Quelle
Ziel
Code
Primärschlüssel sind D und Karte und TeilNr.
Gruppiert werden soll nach D und Karte, wie es ja bereits in der Anfrage steht.
Schöne Grüße
Kerstin
hallo kerstin
nur mal so nachgefragt:
wenn die felder (D+Karte) den unique key bilden
dann kann diese kombination ja nur einmal vorkommen
und deshälb wäre dann der count immer 1
stimmt das mit dem primärschlüssel?
oder liege ich da falsch?
ciao
christian
SELECT D,Karte,COUNT(DISTINCT Code)
FROM Daten
GROUP BY D,Karte;
dankeschön für Deinen Vorschlag. Deine Query führt aber leider auch nicht zu dem gewünschten Ergebnis.
Ich möchte nämlich lediglich die verschiedenen (!) Einträge zu einer D/Karte-Kombination zählen (deshalb ja auch das DISTINCT). Deine Abfrage liefert aber leider die Anzahl aller Einträge, ungeachtet dessen ob sie voneinander verschieden sind.
Grüße
Kerstin
Hallo Kerstin,
wie wär’s damit?
SELECT D,Karte,COUNT(*)
FROM Daten
GROUP BY D,Karte;
ich erkläre es mal an dem von Dir gewählten Beispiel.
Die relevanten Spalten der Tabelle sehen dann so aus:
D Karte Code
1 A 1
1 B 1
1 B 1
2 A 1
2 A 2
2 A 2
2 B 1
3 A 1
3 A 2
Was ich nun mit meiner Anfrage rausbekommen möchte ist die Anzahl der verschiedenen(!) Codes pro D/Karte-Kombination. Das Ergebnis sollte also so aussehen:
D Karte COUNT(Code)
1 A 1
1 B 1
2 A 2
2 B 1
3 A 2
Und das ist nunmal nicht das gleiche Ergebnis wie bei Deiner Abfrage:
dann käme bei meinem SQL folgendes raus:
D Karte Anzahl
1 A 1
1 B 2
2 A 3
2 B 1
3 A 2
Ich denke, dass mein Anliegen mit folgender Query realisierbar sein sollte:
SELECT D,Karte,COUNT(DISTINCT Code)
FROM Daten
GROUP BY D,Karte;
Wie aber schonmal erwähnt, versteht Access diese Formulierung mit SELECT COUNT(DISTINCT…) nicht und deswegen suche ich nun eine andere (=Access-kompatible) Formulierung für diese Anfrage.
Ich hoffe jetzt wird es klarer, was ich eigentlich bezwecken möchte.
Auf jeden Fall schonmal Danke für Deine Bemühungen.
Ich bin zwar noch nicht dahintergestiegen, wie man auf diese Formulierung kommt, aber das soll jetzt wirklich mal nicht das Problem sein, denn: es klappt.
Ich habe das Ergebnis Deiner Formulierung an meinem Datensatz, der ja doch ein bisschen umfangreicher ist als die Beispieltabelle, stichprobenartig überprüft und alles war korrekt.
Damit hast Du mir den Donnerstag gerettet (und das bevorstehende Wochenende gleich mit).
Herzlichen Dank dafür und viele Grüße!
Kerstin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]