Gelegentlich ist das Erstellen und Verwenden von Abfragen in Access ein einfacher Vorgang aus Auswählen von Feldern aus einer Tabelle, eventuell Anwenden von einigen Kriterien und dann Anzeigen der Ergebnisse. Was aber – wie es häufiger der Fall ist –, wenn die benötigten Daten über mehrere Tabellen verteilt sind? Glücklicherweise können Sie eine Abfrage erstellen, die Informationen aus mehreren Quellen kombiniert. In diesem Thema werden einige Szenarien behandelt, in denen Sie Daten aus mehreren Tabellen abrufen, und es wird erläutert, wie Sie dazu vorgehen.
Inhalt dieses Artikels
Verwenden von Daten aus einer verknüpften Tabelle zum Verbessern der Informationen in einer Abfrage
Sie haben möglicherweise Fälle, in denen eine Abfrage, die auf einer Tabelle basiert, Ihnen die erforderlichen Informationen liefert, aber ein Abfragen von Daten aus einer weiteren Tabelle würde es Ihnen ermöglichen, der Abfrageergebnisse noch deutlicher und nützlicher zu gestalten. Angenommen, Sie haben eine Liste von Mitarbeiter-IDs, die in Ihren Abfrageergebnissen angezeigt werden. Sie stellen fest, dass es weitaus nützlicher wäre, die Mitarbeiternamen in den Ergebnissen anzuzeigen, aber die Mitarbeiternamen befinden sich in einer anderen Tabelle. Damit die Mitarbeiternamen in Ihren Abfrageergebnissen angezeigt werden, müssen Sie beide Tabellen in Ihre Abfrage einfügen.
Verwenden des Abfrage-Assistenten, um eine Abfrage anhand einer Primärtabelle und einer verknüpften Tabelle zu generieren
-
Vergewissern Sie sich, dass die Tabellen eine definierte Beziehung im Dialogfeld "Beziehungen" haben.
So wird's gemacht
-
Klicken Sie auf der Registerkarte Datenbanktools in der Gruppe Einblenden/Ausblenden auf Beziehungen.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Beziehungen auf Alle Beziehungen.
-
Geben Sie die Tabellen an, die eine definierte Beziehung haben sollen.
-
Wenn die Tabellen im Fenster "Beziehungen" angezeigt werden, prüfen Sie, ob bereits eine Beziehung definiert wurde.
Eine Beziehung wird als eine Linie angezeigt, die die beiden Tabellen über ein gemeinsames Feld verbindet. Sie können auf eine Beziehungslinie doppelklicken, um zu sehen, welche Felder in den Tabellen durch die Beziehung verbunden sind.
-
Sind die Tabellen nicht im Fenster "Beziehungen" zu sehen, müssen Sie sie hinzufügen.
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Einblenden/Ausblenden auf Tabellennamen.
Doppelklicken Sie auf jede Tabelle, die Sie anzeigen möchten, und klicken Sie dann auf Schließen.
-
-
Wenn zwischen den Tabellen keine Beziehung vorhanden ist, erstellen Sie eine, indem Sie ein Feld aus einer der Tabellen in ein Feld der anderen Tabelle ziehen. Die Felder, über die Sie die Beziehung zwischen den Tabellen erstellen, müssen identische Datentypen haben.
Hinweis: Sie können eine Beziehung zwischen einem Feld, das den AutoWert-Datentyp hat, und einem Feld erstellen, das den Zahl-Datentyp hat, wenn dieses Feld die Feldgröße "Long Integer" hat. Dies ist häufig der Fall sein, wenn Sie eine 1:n-Beziehung erstellen.
Das Dialogfeld Beziehungen bearbeiten wird geöffnet.
-
Klicken Sie auf Erstellen, um die Beziehung zu erstellen.
Weitere Informationen zu den Optionen, die Sie beim Erstellen einer Beziehung haben, finden Sie im Artikel Erstellen, Bearbeiten oder Löschen einer Beziehung.
-
Schließen Sie das Fenster Beziehungen.
-
-
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrage-Assistent.
-
Klicken Sie im Dialogfeld Neue Abfrage auf Auswahlabfrage-Assistent und dann auf OK.
-
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf die Tabelle, die die grundlegenden Informationen enthält, die Sie in Ihre Abfrage einfügen möchten.
-
Klicken Sie in der Liste Verfügbare Felder auf das erste Feld, das Sie in Ihre Abfrage einbinden möchten, und klicken Sie dann auf den Einzelpfeil nach rechts, um dieses Feld in die Liste Ausgewählte Felder zu verschieben. Wiederholen Sie diesen Schritt mit jedem weiteren Feld aus dieser Tabelle, das Sie in Ihre Abfrage einbinden möchten. Hierzu zählen Felder, die in die Abfrageausgabe zurückgegeben werden sollen, oder Felder, die Sie dazu verwenden möchten, die Zeilen in der Ausgabe durch Anwenden von Kriterien zu begrenzen.
-
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf die Tabelle, die die verknüpften Daten enthält, die Sie zum Verbessern Ihrer Abfrageergebnisse verwenden möchten.
-
Fügen Sie der Liste Ausgewählte Felder die Felder hinzu, die Sie zum Verbessern der Abfrageergebnisse verwenden möchten, und klicken Sie dann auf Weiter.
-
Klicken Sie unter Möchten Sie eine Detail- oder Zusammenfassungsabfrage? entweder auf Detail oder auf Zusammenfassung.
Wenn Ihre Abfrage keine Aggregatfunktion (Summe, Mittelwert, Min, Max, Anzahl, StAbw oder Varianz) ausführen soll, wählen Sie eine Detailzusammenfassung aus. Wenn Ihre Abfrage eine Aggregatfunktion ausführen soll, wählen Sie eine Zusammenfassungsabfrage aus. Nachdem Sie Ihre Auswahl getroffen haben, klicken Sie auf Weiter.
-
Klicken Sie auf Fertig stellen, um die Ergebnisse anzuzeigen.
Ein Beispiel, in dem die Beispieldatenbank Northwind verwendet wird
Im folgenden Beispiel verwenden Sie den Abfrage-Assistenten, um eine Abfrage zu erstellen, die eine Liste mit Bestellungen, die Versandkosten für jede Bestellung sowie den Namen des Mitarbeiters anzeigt, der die jeweilige Bestellung bearbeitet hat.
Hinweis: Dieses Beispiel bedingt, dass die Northwind-Beispieldatenbank geändert wird. Sie sollten eine Sicherungskopie der Northwind-Beispieldatenbank erstellen und dann die Schritte in diesem Beispiel in der Sicherungskopie ausführen.
Verwenden des Abfrage-Assistenten, um die Abfrage zu erstellen
-
Öffnen Sie die Beispieldatenbank Northwind. Schließen Sie das Anmeldeformular.
-
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrage-Assistent.
-
Klicken Sie im Dialogfeld Neue Abfrage auf Auswahlabfrage-Assistent und dann auf OK.
-
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf Tabelle: Bestellungen.
-
Doppelklicken Sie in der Liste Verfügbare Felder auf Bestell-Nr, um das Feld in die Liste Ausgewählte Felder zu verschieben. Doppelklicken Sie auf Versandkosten, um das Feld in die Liste Ausgewählte Felder zu verschieben.
-
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf Tabelle: Personal.
-
Doppelklicken Sie in der Liste Verfügbare Felder auf Vorname, um das Feld in die Liste Ausgewählte Felder zu verschieben. Doppelklicken Sie auf Nachname, um das Feld in die Liste Ausgewählte Felder zu verschieben. Klicken Sie auf Weiter.
-
Weil Sie eine Liste aller Bestellungen erstellen möchten, verwenden Sie eine Detailabfrage. Wenn Sie die Versandkosten nach Mitarbeitern zusammenfassen oder irgendeine andere Aggregatfunktion ausführen, verwenden Sie eine Zusammenfassungsabfrage. Klicken Sie auf Detail (zeigt jedes Feld aus jedem Datensatz), und klicken Sie dann auf Weiter.
-
Klicken Sie auf Fertig stellen, um die Ergebnisse anzuzeigen.
Die Abfrage gibt eine Liste mit Bestellungen zurück, wobei zu jeder Bestellung deren Versandkosten sowie der Vor- und der Nachname des Mitarbeiters aufgeführt sind, der sie bearbeitet hat.
Verbinden der Daten in zwei Tabellen über deren Beziehungen mit einer dritten Tabelle
Häufig sind Daten in zwei Tabellen über eine dritte Tabelle miteinander verbunden. Der Grund hierfür ist üblicherweise, dass die Daten in den ersten beiden Tabellen über eine m:n-Beziehung verbunden sind. Meist bietet es sich als gute Vorgehensweise zum Entwerfen einer Datenbank an, eine m:n-Beziehung zwischen zwei Tabellen in zwei 1:n-Beziehungen aufzuteilen, für die drei Tabellen benötigt werden. Hierzu erstellen Sie eine dritte Tabelle, die als Verknüpfungstabelle oder Beziehungstabelle bezeichnet wird und einen Primärschlüssel sowie einen Fremdschlüssel für jede der anderen Tabellen enthält. Eine 1:n-Beziehung wird dann zwischen jedem Fremdschlüssel in der Verknüpfungstabelle und dem entsprechenden Primärschlüssel in einer der anderen Tabellen erstellt. In einem solchen Fall müssen Sie alle drei Tabellen in Ihre Abfrage einfügen, auch dann, wenn Sie aus nur zwei dieser Tabellen Daten aufrufen möchten.
Erstellen einer Auswahlabfrage über Tabellen mit einer m:n-Beziehung
-
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.
-
Doppelklicken Sie auf die beiden Tabellen, die die Daten enthalten, die Sie in ihre Abfrage einschließen möchten, sowie auf die Verknüpfungstabelle, die sie verknüpft, und klicken Sie dann auf Schließen.
Alle drei Tabellen werden im Abfrageentwurfsbereich angezeigt, wobei sie über die entsprechenden Feldern verknüpft sind.
-
Doppelklicken Sie auf jedes Feld, das Sie in Ihren Abfrageergebnissen verwenden möchten. Jedes Feld wird dann im Abfrage-Entwurfsbereich angezeigt.
-
Verwenden Sie im Abfrageentwurfsbereich die Zeile Kriterien, um Feldkriterien einzugeben. Wenn Sie ein Feldkriterium verwenden möchten, ohne dass das Feld in den Abfrageergebnissen angezeigt wird, deaktivieren Sie das Kontrollkästchen in der Zeile Anzeigen für dieses Feld.
-
Sollen die Ergebnisse anhand der Werte in einem Feld sortiert werden, klicken Sie im Abfrageentwurfsbereich in der Zeile Sortieren für dieses Feld auf Aufsteigend oder Absteigend (je nach gewünschter Art der Sortierung der Datensätze).
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
In Access wird die Abfrageausgabe in der Datenblattansicht angezeigt.
Ein Beispiel, in dem die Northwind-Beispieldatenbank verwendet wird
Hinweis: Dieses Beispiel bedingt, dass die Northwind-Beispieldatenbank geändert wird. Sie sollten eine Sicherungskopie der Northwind-Beispieldatenbank erstellen und dann die Schritte in diesem Beispiel in der Sicherungskopie ausführen.
Nehmen Sie an, Sie haben eine neue Verkaufschance: Ein Lieferant in Rio de Janeiro hat Ihre Website gefunden und möchte mit Ihnen ins Geschäft kommen. Allerdings ist der Lieferant nur in Rio und in der Nähe von São Paulo tätig. Er liefert jede Sorte von Nahrungsmittelprodukten, die Sie als Makler anbieten. Der Lieferant ist ein relativ großer Betrieb, der von Ihnen erwartet, dass Sie ihm zu einem möglichen Mindestumsatz verhelfen, damit sich das Geschäft lohnt: mindestens R$ 20.000,00 Umsatz pro Jahr (ungefähr $ 9.300,00). Können Sie dem Lieferanten die Absatzmenge in Aussicht stellen, die er erwartet?
Die Daten, die zur Beantwortung dieser Frage benötigt werden, sind an zwei Stellen zu finden: in der Tabelle "Kunden" und in der Tabelle "Bestelldetails". Diese Tabellen sind über die Tabelle "Bestellungen" miteinander verknüpft. Es sind bereits Beziehungen zwischen den Tabellen definiert. In der Tabelle "Bestellungen" kann für jede Bestellung nur ein Kunde angegeben sein, wobei die Bestellung über das Feld "Kunden-Code" mit der Tabelle "Kunden" verknüpft ist. Jeder Datensatz in der Tabelle "Bestelldetails" ist über das Feld "Bestell-Nr" mit nur einer Bestellung in der Tabelle "Bestellungen" verknüpft. Somit kann es für einen bestimmten Kunden viele Bestellungen geben, von denen jede viele Bestelldetails haben kann.
In diesem Beispiel erstellen Sie eine Kreuztabellenabfrage, in der der Gesamtjahresumsatz angezeigt wird, den Sie in den Städten Rio de Janeiro und São Paulo erzielen.
Erstellen der Abfrage in der Entwurfsansicht
-
Öffnen Sie die Northwind-Datenbank. Schließen Sie das Anmeldeformular.
-
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.
-
Doppelklicken Sie auf Kunden, Bestellungen und dannauf Bestelldetails.
Alle drei Tabellen werden im Abfrageentwurfsbereich angezeigt.
-
Doppelklicken Sie in der Tabelle "Kunden" auf das Feld "Ort", damit es zum Abfrageentwurfsbereich hinzugefügt wird.
-
Geben Sie im Abfrageentwurfsbereich in der Spalte Ort in der Zeile Kriterien Folgendes ein: In ("Rio de Janeiro";"São Paulo"). Hiermit wird erreicht, dass in die Abfrage nur die Datensätze einbezogen werden, in denen der Kunde in einem dieser beiden Orte ansässig ist.
-
Doppelklicken Sie in der Tabelle "Bestelldetails" auf die Felder "Versanddatum" und "Einzelpreis".
Die Felder werden dem Abfrageentwurfsbereich hinzugefügt.
-
Wählen Sie im Abfrageentwurfsbereich in der Spalte Versanddatum die Zeile Feld aus. Ersetzen Sie [Versanddatum] durch Jahr: Format([Versanddatum];"jjjj"). Hiermit wird ein Feldalias, Jahr, erstellt, der es Ihnen ermöglicht, nur die Jahreszahl des Werts aus dem Feld "Versanddatum" zu verwenden.
-
Wählen Sie im Abfrageentwurfsbereich in der Spalte Einzelpreis die Zeile Feld aus. Ersetzen Sie [Einzelpreis] durch Umsatz: [Bestelldetails].[Einzelpreis]*[Anzahl]-[Bestelldetails].[Einzelpreis]*[Anzahl]*[Rabatt]. Hiermit wird ein Feldalias, Umsatz, erstellt, mit dem der Umsatz für jeden Datensatz berechnet wird.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Kreuztabelle.
Zwei neue Zeilen, Funktion und Kreuztabelle, werden im Abfrageentwurfsbereich angezeigt.
-
Klicken Sie im Abfrageentwurfsbereich in der Spalte Ort auf die Zeile Kreuztabelle, und klicken Sie dann auf Zeilenüberschrift.
Dies bewirkt, dass Ortswerte als Zeilenüberschriften angezeigt werden (d. h., die Abfrage gibt eine Zeile für jeden Ort zurück).
-
Klicken Sie in der Spalte Jahr auf die Zeile Kreuztabelle, und klicken Sie dann auf Spaltenüberschrift.
Dies bewirkt, dass Jahreswerte als Spaltenüberschriften angezeigt werden (d. h., die Abfrage gibt eine Spalte für jedes Jahr zurück).
-
Klicken Sie in der Spalte Umsatz auf die Zeile Kreuztabelle, und klicken Sie auf Wert.
Hierdurch werden Umsatzwerte an den Schnittpunkten von Zeilen und Spalte angezeigt (d. h., die Abfrage gibt einen Umsatzwert für jede Kombination aus Ort und Jahr zurück).
-
Klicken Sie in der Spalte Umsatz auf die Zeile Funktion, und klicken Sie auf Summe.
Dies bewirkt, dass die Abfrage die Werte in dieser Spalte summiert.
In der Zeile Funktion für die beiden anderen Spalten können Sie den Standardwert Gruppierung belassen, weil Sie für diese Spalten keine aggregierten Werte, sondern jeden Wert anzeigen möchten.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
Sie haben nun eine Abfrage, die die Gesamtumsätze nach Jahr für Rio de Janeiro und São Paulo zurückgibt.
Anzeigen aller Datensätze aus zwei ähnlichen Tabellen
Es kann vorkommen, dass Sie Daten aus zwei Tabellen kombinieren müssen, deren Strukturen identisch ist, von denen sich eine Tabelle aber in einer anderen Datenbank befindet. Nehmen Sie folgendes Szenario an.
Angenommen, Sie sind ein Analyst, der mit Studentendaten arbeitet. Sie starten eine Initiative zum Austausch von Daten zwischen Ihrer Schule und einer anderen Schule, damit beide Schulen ihre Lehrpläne verbessern können. Für einige der Fragen, die Sie untersuchen möchten, ist es besser, alle Datensätze aus beiden Schulen zusammen zu betrachten, anstatt die Datensätze jeder Bildungseinrichtung separat zu betrachten.
Sie könnten die Daten der anderen Schule in neue Tabellen in Ihrer Datenbank importieren, dann würden mögliche Änderungen an den Daten der anderen Schule aber nicht in Ihrer Datenbank berücksichtigt. Eine bessere Lösung besteht darin, Verbindungen mit den Tabellen der anderen Schule zu erstellen, um dann Abfragen zu erstellen, in denen die Daten beim Ausführen kombiniert werden. Sie können die Daten als eine Menge analysieren, statt zwei Analysen auszuführen und zu versuchen, diese als eine zu interpretieren.
Verwenden Sie eine Union-Abfrage, um alle Datensätze aus zwei Tabellen mit identischer Struktur anzuzeigen.
Union-Abfragen können nicht in der Entwurfsansicht angezeigt werden. Sie erstellen eine Union-Abfrage in Form von SQL-Anweisungen, die Sie auf einer Registerkarte für ein SQL-Ansicht-Objekt eingeben.
Erstellen einer Union-Abfrage durch Verwenden von zwei Tabellen
-
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Union.
Für die Abfrage wird von der Entwurfsansicht in die SQL-Sicht gewechselt. Zu diesem Zeitpunkt ist die Registerkarte für das SQL-Ansichtsobjekt leer.
-
Geben Sie in der SQL-Ansicht zunächst SELECT und dann als Liste die entsprechenden Felder aus der ersten der Tabellen ein, die die Abfrage enthalten soll. Feldnamen sollten in eckige Klammern gesetzt und müssen durch Kommas voneinander getrennt werden. Wenn Sie die Eingabe der Feldnamen abgeschlossen haben, drücken Sie die EINGABETASTE. Der Cursor wird in der SQL-Ansicht um eine Zeile nach unten verschoben.
-
Geben Sie FROM und dann den Namen der ersten der Tabellen ein, die die Abfrage enthalten soll. Drücken Sie die EINGABETASTE.
-
Wenn Sie ein Kriterium für ein Feld aus der ersten Tabelle angeben möchten, geben Sie WHERE ein, gefolgt vom Feldnamen, einem Vergleichsoperator (normalerweise ein Gleichheitszeichen (=)) und dem Kriterium. Sie können am Ende der WHERE-Klausel weitere Kriterien hinzufügen, indem Sie das Schlüsselwort AND sowie dieselbe Syntax wie für das erste Kriterium verwenden (z. B. WHERE [Ist-Stunden]="100" AND [Zusatzstunden]>2). Wenn Sie die gewünschten Kriterien eingegeben haben, drücken Sie die EINGABETASTE.
-
Geben Sie UNION ein, und drücken Sie dann die EINGABETASTE.
-
Geben Sie zunächst SELECT und dann als Liste die entsprechenden Felder aus der zweiten der Tabellen ein, die die Abfrage enthalten soll. Sie sollten aus dieser Tabelle die gleichen Felder einfügen, die Sie aus der ersten Tabelle eingefügt haben, und dies in derselben Reihenfolge. Feldnamen sollten in eckige Klammern gesetzt und müssen durch Kommas voneinander getrennt werden. Wenn Sie die Eingabe der Feldnamen abgeschlossen haben, drücken Sie die EINGABETASTE.
-
Geben Sie FROM und dann den Namen der zweiten Tabelle, die in der Abfrage enthalten sein soll. Drücken Sie die EINGABETASTE.
-
Fügen Sie ggf. eine WHERE-Klausel hinzu, wie in Schritt 6 dieser Vorgehensweise beschrieben.
-
Geben Sie ein Semikolon (;) ein, um das Ende der Abfrage zu kennzeichnen.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
Die Ergebnisse werden in der Datenblattansicht angezeigt.