Verschachtelte SQL-Abfrage in MS Access

  • #1
L

Littlegreenman

Mitglied
Themenersteller
Dabei seit
24.03.2005
Beiträge
11
Reaktionspunkte
0
Ich habe mir ein Fahrtenbuch mit MS Access erstellt und bin gerade dabei, ein paar SQL-Abfragen zu basteln. Darunter auch eine Übersicht, in der die wichtigsten Dinge zusammengefasst werden sollen. Leider bin ich an einem Punkt angekommen, an dem ich nicht mehr weiter weiß. Vielleicht kann mir jemand einen Tipp geben.

Problem:
Ich habe eine Tabelle Fahrtenbuch, welche auch die Spalte Typ enthält. In dieser Spalte ist festgelegt, ob es sich um eine betriebliche oder eine private Fahrt mit meinem KFZ handelte. Die Einträge können entsprechend betrieblich oder privat lauten.

Nun möchte ich eine SQL-Abfrage erstellen, die mir die Anzahl aller Fahrten und gleichzeitig auch die Anzahl aller betrieblichen und die Anzahl aller privaten Fahrten in einem Rutsch ausgibt. Wie bekomme ich das in Access hin?

Das Ergebnis soll dann ungefähr so aussehen:

Alle_Fahrten   Betriebliche Fahrten   Private_Fahrten
146                 100                            46

Bisher lautet meine SQL-Abfrage:

SELECT COUNT(*) AS Alle_Fahrten
FROM Fahrtenbuch;

Damit habe ich zunächst einmal die Anzahl aller Fahrten auf dem Bildschirm. Mit einer zusätzlichen WHERE-Bedingung würde ich mich auf alle Fahrten beziehen, daher müsste ich hier vermutlich mit einer verschachtelten Abfrage arbeiten. In der Access-Hilfe habe ich leider keine Antwort gefunden.

Danke schon mal für alle Tipps!
 
  • #2
Versuch es mal mit der Abfrage-Funktion von ACCESS, dahinter steht dann die SQL-Anweisung.

Gruß
Kurt Körner
 
  • #3
Eine gute Lösung hierfür ist eine UNION-Abfrage. Das Feld ID bezieht sich auf die Autowert-Spalte mit dem PrimaryKey in der Fahrtenbuch-Tabelle. Die Bedingungen Privat und Betrieb müssen den Einträgen unter Typ in der Tabelle entsprechen.

Der Code kann in einer neuen Abfrage in der Entwurfsansicht in das SQL-Fenster kopiert werden:

SELECT Fahrtenbuch.Typ, Count(Fahrtenbuch.ID) AS Anzahl
FROM Fahrtenbuch
GROUP BY Fahrtenbuch.Typ
HAVING (((Fahrtenbuch.Typ)=privat));
UNION ALL
SELECT Fahrtenbuch.Typ, Count(Fahrtenbuch.ID) AS Anzahl
FROM Fahrtenbuch
GROUP BY Fahrtenbuch.Typ
HAVING (((Fahrtenbuch.Typ)=betrieb));
UNION ALL
SELECT Alle_Fahrten AS Typ, Count(Fahrtenbuch.ID) AS Anzahl
FROM Fahrtenbuch
GROUP BY Alle_Fahrten;
 
Thema:

Verschachtelte SQL-Abfrage in MS Access

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben