Hallo Leute,
ich versuche ein wenig auszuholen um mein Problem zu beschreiben
Ich habe eine große (nicht normalisierte!) Tabelle mit Adressdaten (Personen, Dienststelle, Admins usw).
Beispiel:
ID bezeichnung Amt admin angeschrieben antwort
1 Person 1 1 N 0 0
2 Person 2 2 N 0 0
3 Person 3 3 J 0 0
4 Person 4 1 J 0 0
5 Person 5 1 J 0 0
6 Person 6 2 N 1 0
7 Person 7 4 N 1 0
8 Person 8 3 N 1 0
9 Person 9 2 N 1 0
10 Person 10 2 N 1 0
11 Person 11 1 N 1 1
12 Person 12 4 J 1 0
13 Person 13 3 J 1 0
14 Person 14 2 J 1 1
15 Person 15 1 J 1 0
16 Person 16 1 J 1 1
Nun möchte ich mir ausgaben wieviele Admins und wieviele Normaluser es pro Amt gibt.
SELECT Tabelle1.Amt, Tabelle1.admin, Count(Tabelle1.angeschrieben) AS Anzahlvonangeschrieben
FROM Tabelle1
GROUP BY Tabelle1.Amt, Tabelle1.admin;
Ergebnis
Amt admin Anzahl
1 J 4
1 N 2
2 J 1
2 N 4
3 J 2
3 N 1
4 J 1
4 N 1
Darüber hinaus möchte ich die Anzahl der Leute pro Amt (unterscheidung auch wieder Admin ja/nein) die angeschrieben wurde.
SELECT Tabelle1.Amt, Tabelle1.admin, Count(Tabelle1.angeschrieben) AS Anzahlvonangeschrieben
FROM Tabelle1
GROUP BY Tabelle1.Amt, Tabelle1.admin, Tabelle1.angeschrieben
HAVING (((Tabelle1.angeschrieben)=1));
Ergebnis
Amt admin Anzahlvonangeschrieben
1 J 2
1 N 1
2 J 1
2 N 3
3 J 1
3 N 1
4 J 1
4 N 1
Und wieviele Antworten ich bekommen habe
SELECT Tabelle1.Amt, Tabelle1.admin, Count(Tabelle1.antwort) AS Anzahlvonantwort
FROM Tabelle1
GROUP BY Tabelle1.Amt, Tabelle1.admin, Tabelle1.antwort
HAVING (((Tabelle1.antwort)=1));
Ergebnis
Amt admin Anzahlvonantwort
1 J 1
1 N 1
2 J 1
Das stimmt bis hier auch alles.
Aber: Das endgültige Ergebnis möchte ich in eine Abfrage haben die ich dann exportieren kann.
Ziel:
Amt admin alle.Anzahlvonangeschrieben Anzahlvonantwort angeschrieben.Anzahlvonangeschrieben
Ich habe mir eine neue Abfrage gemacht, die 3 Abfragen als Grundlage genommen und ausgehend von der "Gesamt" Abfrage (die ja die größte Datenmenge beinhaltet) die anderen 2 Abfragen (angeschrieben, antwort) mit einen Left Join verbunden
SELECT alle.Amt, alle.admin, alle.Anzahlvonangeschrieben, antwort.Anzahlvonantwort, angeschrieben.Anzahlvonangeschrieben
FROM (alle LEFT JOIN antwort ON (alle.Amt = antwort.Amt) AND (alle.admin = antwort.admin)) LEFT JOIN angeschrieben ON (alle.Amt = angeschrieben.Amt) AND (alle.admin = angeschrieben.admin)
GROUP BY alle.Amt, alle.admin, alle.Anzahlvonangeschrieben, antwort.Anzahlvonantwort, angeschrieben.Anzahlvonangeschrieben;
Das Ergebnis der letzten 2 Spalten ist aber nicht korrekt, er gibt mir nur in einigen Feldern den Wert 1 an und ich hab keine ahnung warum
Amt admin alle.Anzahlvonangeschrieben Anzahlvonantwort angeschrieben.Anzahlvonangeschrieben
1 J 4 1
1 N 2 1
2 J 1 1 1
2 N 4
3 J 2
3 N 1 1
4 J 1 1
4 N 1 1
Ich frage mich nun warum die "gesamt" Abfrage stimmt, die 2 angebundenen Abfragen aber nicht gehen.
Hat jemand von euch einen Hinweis?
Viele Grüße
Thomas
Hallo Thomas,
wenn du nur die Summe der Anschreiben bzw. der Antworten der einzelnen Admins von den verschiedenen Ämtern haben willst, ist das mit einer Abfrage zu realisieren:
SELECT Amt, Admin,
DCount("*","tblAdressdaten","Angeschrieben='1'" & " AND Amt='" & [Amt] & "'" & " AND Admin='" & [Admin] & "'") AS Anschreiben,
DCount("*","tblAdressdaten","Antwort='1'" & " AND Amt='" & [Amt] & "'" & " AND Admin='" & [Admin] & "'") AS Antworten
FROM tblAdressdaten
GROUP BY Amt, Admin
oder willst du die Anzahl der Anschreiben, die nicht beantwortet sind?
Gruß Oma