Erstellen Sie eine Abfrage basierend auf mehreren Tabellen
Manchmal besteht der Prozess des Erstellens und Verwendens von Abfragen in Access darin, Felder aus einer Tabelle auszuwählen, möglicherweise einige Kriterien anzuwenden und dann die Ergebnisse anzuzeigen. Aber was ist, wenn die benötigten Daten, wie es häufiger der Fall ist, auf mehr als eine Tabelle verteilt sind? Glücklicherweise können Sie eine Abfrage erstellen, die Informationen aus mehreren Quellen kombiniert. In diesem Thema werden einige Szenarien untersucht, in denen Sie Daten aus mehr als einer Tabelle abrufen, und es wird veranschaulicht, wie Sie dabei vorgehen.
Was möchten Sie tun?
Verwenden Sie Daten aus einer verknüpften Tabelle, um die Informationen in Ihrer Abfrage zu verbessern
Möglicherweise gibt es Fälle, in denen eine Abfrage, die auf einer Tabelle basiert, Ihnen die benötigten Informationen liefert, aber das Abrufen von Daten aus einer anderen Tabelle dazu beitragen würde, die Abfrageergebnisse noch klarer und nützlicher zu machen. Angenommen, Sie haben eine Liste mit Mitarbeiter-IDs, die in Ihren Abfrageergebnissen erscheinen. Sie erkennen, dass es sinnvoller wäre, den Mitarbeiternamen in den Ergebnissen anzuzeigen, aber die Mitarbeiternamen befinden sich in einer anderen Tabelle. Damit die Mitarbeiternamen in Ihren Abfrageergebnissen erscheinen, müssen Sie beide Tabellen in Ihre Abfrage einbeziehen.
Verwenden Sie den Abfrage-Assistenten, um eine Abfrage aus einer Primärtabelle und einer verknüpften Tabelle zu erstellen
Stellen Sie sicher, dass die Tabellen eine definierte Beziehung im Fenster Beziehungen haben.
Wie?
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 .
Identifizieren Sie die Tabellen, die eine definierte Beziehung haben sollten.
Wenn die Tabellen im Fenster Beziehungen sichtbar sind, überprüfen Sie, ob bereits eine Beziehung definiert wurde.
Eine Beziehung wird als Linie angezeigt, die die beiden Tabellen in einem gemeinsamen Feld verbindet. Sie können auf eine Beziehungslinie doppelklicken, um zu sehen, welche Felder in den Tabellen durch die Beziehung verbunden sind.
Wenn die Tabellen im Fenster „Beziehungen" nicht sichtbar sind, müssen Sie sie hinzufügen.
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Einblenden /Ausblenden auf Tabellennamen .
Doppelklicken Sie auf jede der Tabellen, die Sie anzeigen möchten, und klicken Sie dann auf Schließen .
Wenn Sie keine Beziehung zwischen den beiden Tabellen finden, erstellen Sie eine, indem Sie ein Feld aus einer der Tabellen auf ein Feld in der anderen Tabelle ziehen. Die Felder, auf denen Sie die Beziehung zwischen den Tabellen erstellen, müssen identische Datentypen haben.
Hinweis: Sie können eine Beziehung zwischen einem Feld vom Datentyp „AutoWert" und einem Feld vom Datentyp „Zahl" erstellen, wenn dieses Feld eine Feldgröße für lange Ganzzahlen hat. Dies ist häufig der Fall, wenn Sie eine Eins-zu-Viele-Beziehung erstellen.
Das Dialogfeld „ Beziehungen bearbeiten " wird angezeigt.
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 Eine Beziehung erstellen, bearbeiten oder löschen .
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 Assistent für einfache Abfragen und dann auf OK .
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf die Tabelle mit den grundlegenden Informationen, die Sie in Ihre Abfrage aufnehmen möchten.
Klicken Sie in der Liste „ Verfügbare Felder " auf das erste Feld, das Sie in Ihre Abfrage aufnehmen möchten, und klicken Sie dann auf die Schaltfläche mit dem einfachen Rechtspfeil, um dieses Feld in die Liste „ Ausgewählte Felder " zu verschieben. Machen Sie dasselbe mit jedem zusätzlichen Feld aus dieser Tabelle, das Sie in Ihre Abfrage aufnehmen möchten. Dies können Felder sein, die in der Abfrageausgabe zurückgegeben werden sollen, oder Felder, die Sie verwenden möchten, um die Zeilen in der Ausgabe durch Anwenden von Kriterien einzuschränken.
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf die Tabelle mit den zugehörigen Daten, die Sie verwenden möchten, um Ihre Abfrageergebnisse zu verbessern.
Fügen Sie die Felder, die Sie verwenden möchten, um Ihre Abfrageergebnisse zu verbessern, zur Liste Ausgewählte Felder hinzu, und klicken Sie dann auf Weiter .
Unter Möchten Sie eine Detail- oder Sammelabfrage? , klicken Sie entweder auf Detail oder Zusammenfassung .
Wenn Ihre Abfrage keine Aggregatfunktionen ausführen soll ( Sum , Avg , Min , Max , Count , StDev oder Var ), wählen Sie eine Detailabfrage aus. Wenn Sie möchten, dass Ihre Abfrage eine Aggregatfunktion ausführt, wählen Sie eine zusammenfassende Abfrage aus. Nachdem Sie Ihre Auswahl getroffen haben, klicken Sie auf Weiter .
Klicken Sie auf Fertig stellen , um die Ergebnisse anzuzeigen.
Ein Beispiel, das die Northwind-Beispieldatenbank verwendet
Im folgenden Beispiel verwenden Sie den Abfrage-Assistenten, um eine Abfrage zu erstellen, die eine Liste mit Bestellungen, die Versandkosten für jede Bestellung und den Namen des Mitarbeiters anzeigt, der jede Bestellung bearbeitet hat.
Hinweis: In diesem Beispiel wird die Northwind-Beispieldatenbank geändert. Sie können eine Sicherungskopie der Beispieldatenbank Northwind erstellen und dann diesem Beispiel folgen, indem Sie diese Sicherungskopie verwenden.
Verwenden Sie den Abfrage-Assistenten, um die Abfrage zu erstellen
Öffnen Sie die Northwind-Beispieldatenbank. 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 Assistent für einfache Abfragen und dann auf OK .
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf Tabelle: Bestellungen .
Doppelklicken Sie in der Liste Verfügbare Felder auf OrderID , um dieses Feld in die Liste Ausgewählte Felder zu verschieben. Doppelklicken Sie auf Versandgebühr , um dieses Feld in die Liste Ausgewählte Felder zu verschieben.
Klicken Sie im Kombinationsfeld Tabellen/Abfragen auf Tabelle: Mitarbeiter .
Doppelklicken Sie in der Liste Verfügbare Felder auf FirstName , um dieses Feld in die Liste Ausgewählte Felder zu verschieben. Doppelklicken Sie auf Nachname , um dieses Feld in die Liste Ausgewählte Felder zu verschieben. Klicken Sie auf Weiter .
Da Sie eine Liste aller Bestellungen erstellen, möchten Sie eine Detailabfrage verwenden. Wenn Sie die Versandkosten pro Mitarbeiter summieren oder eine andere aggregierte Funktion ausführen, verwenden Sie eine zusammenfassende Abfrage. Klicken Sie auf Detail (zeigt jedes Feld jedes Datensatzes) und dann auf Weiter .
Klicken Sie auf Fertig stellen , um die Ergebnisse anzuzeigen.
Die Abfrage gibt eine Liste von Bestellungen zurück, jede mit ihrer Versandgebühr und dem Vor- und Nachnamen des Mitarbeiters, der sie bearbeitet hat.
Verbinden Sie die Daten in zwei Tabellen, indem Sie ihre Beziehungen mit einer dritten Tabelle verwenden
Häufig werden Daten in zwei Tabellen über eine dritte Tabelle miteinander in Beziehung gesetzt. Dies ist normalerweise der Fall, da die Daten zwischen den ersten beiden Tabellen in einer Viele-zu-Viele-Beziehung verknüpft sind. Häufig ist es eine bewährte Vorgehensweise beim Datenbankdesign, eine Viele-zu-Viele-Beziehung zwischen zwei Tabellen in zwei Eins-zu-Viele-Beziehungen aufzuteilen, die drei Tabellen umfassen. Dazu erstellen Sie eine dritte Tabelle, die als Verbindungstabelle oder Beziehungstabelle bezeichnet wird und über einen Primärschlüssel und einen Fremdschlüssel für jede der anderen Tabellen verfügt. Dann wird eine Eins-zu-Viele-Beziehung zwischen jedem Fremdschlüssel in der Verbindungstabelle und dem entsprechenden Primärschlüssel einer der anderen Tabellen erstellt. In solchen Fällen müssen Sie alle drei Tabellen in Ihre Abfrage einbeziehen, auch wenn Sie nur Daten aus zweien abrufen möchten.
Erstellen Sie eine Auswahlabfrage, indem Sie Tabellen mit einer Viele-zu-Viele-Beziehung verwenden
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 einbeziehen möchten, sowie auf die Verknüpfungstabelle, die sie verknüpft, und klicken Sie dann auf Schließen .
Alle drei Tabellen werden im Abfragedesign-Arbeitsbereich angezeigt, verbunden mit den entsprechenden Feldern.
Doppelklicken Sie auf jedes der Felder, die Sie in Ihren Abfrageergebnissen verwenden möchten. Jedes Feld wird dann im Abfrageentwurfsbereich angezeigt.
Verwenden Sie im Abfrageentwurfsbereich die Zeile Kriterien, um Feldkriterien einzugeben. Um ein Feldkriterium zu verwenden, ohne das Feld in den Abfrageergebnissen anzuzeigen, deaktivieren Sie das Kontrollkästchen in der Zeile Anzeigen für dieses Feld.
Um die Ergebnisse basierend auf den Werten in einem Feld zu sortieren, klicken Sie im Abfrageentwurfsbereich in der Zeile „ Sortieren " für dieses Feld auf „ Aufsteigend " oder „ Absteigend " (je nachdem, wie Sie die Datensätze sortieren möchten).
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen .
Access zeigt die Abfrageausgabe in der Datenblattansicht an.
Ein Beispiel, das die Northwind-Beispieldatenbank verwendet
Hinweis: In diesem Beispiel wird die Northwind-Beispieldatenbank geändert. Empfiehlt sich, eine Sicherungskopie der Northwind-Beispieldatenbank zu erstellen, und dann diesem Beispiel zu folgen, indem Sie die Sicherungskopie verwenden.
Angenommen, Sie haben eine neue Gelegenheit: Ein Lieferant in Rio de Janeiro hat Ihre Website gefunden und möchte möglicherweise mit Ihnen Geschäfte machen. Sie operieren jedoch nur in Rio und in der Nähe von São Paulo. Sie liefern jede Kategorie von Lebensmitteln, die Sie vermitteln. Sie sind ein ziemlich großes Unternehmen und möchten Ihre Zusicherung, dass Sie ihnen Zugang zu genügend potenziellen Verkäufen verschaffen können, damit es sich lohnt: mindestens R$ 20.000,00 pro Jahr an Verkäufen (ca. $ 9.300,00). Können Sie ihnen den Markt bieten, den sie benötigen?
Die Daten, die Sie zur Beantwortung dieser Frage benötigen, befinden sich an zwei Stellen: in einer Customers-Tabelle und in einer Order Details-Tabelle. Diese Tabellen sind durch eine Orders-Tabelle miteinander verknüpft. Beziehungen zwischen den Tabellen sind bereits definiert. In der Orders-Tabelle kann jede Bestellung nur einen Kunden haben, bezogen auf die Customers-Tabelle im Feld CustomerID. Jeder Datensatz in der Tabelle "Bestelldetails" bezieht sich nur auf eine Bestellung in der Tabelle "Bestellungen" im Feld "Bestell-ID". Somit kann ein gegebener Kunde viele Bestellungen haben, von denen jede viele Bestelldetails hat.
In diesem Beispiel erstellen Sie eine Kreuztabellenabfrage, die den Gesamtumsatz pro Jahr in den Städten Rio de Janeiro und São Paulo anzeigt.
Erstellen Sie die 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 dann auf Bestelldetails .
Alle drei Tabellen werden im Abfragedesign-Arbeitsbereich angezeigt.
Doppelklicken Sie in der Tabelle Customers auf das Feld City, um es dem Abfrageentwurfsbereich hinzuzufügen.
Geben Sie im Abfrageentwurfsbereich in der Spalte Stadt in der Zeile Kriterien den Text In ("Rio de Janeiro","São Paulo") ein . Dadurch werden nur die Datensätze in die Abfrage aufgenommen, bei denen sich der Kunde in einer dieser beiden Städte befindet.
Doppelklicken Sie in der Tabelle „Bestelldetails" auf die Felder ShippedDate und UnitPrice.
Die Felder werden dem Abfrageentwurfsbereich hinzugefügt.
Wählen Sie in der Spalte Lieferdatum im Abfrageentwurfsbereich die Zeile Feld aus. Ersetzen Sie [ShippedDate] durch Year: Format([ShippedDate],"yyyy") . Dadurch wird ein Feldalias namens Year erstellt, mit dem Sie nur den Jahresteil des Werts im Feld ShippedDate verwenden können.
Wählen Sie in der Spalte „UnitPrice" im Abfrageentwurfsbereich die Zeile „ Feld " aus. Ersetzen Sie [Einzelpreis] durch Verkäufe: [Bestelldetails].[Einzelpreis]*[Menge]-[Bestelldetails].[Einzelpreis]*[Menge]*[Rabatt] . Dadurch wird ein Feldalias Sales erstellt, der die Verkäufe für jeden Datensatz berechnet.
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Kreuztabelle .
Zwei neue Zeilen, Gesamt und Kreuztabelle , werden im Abfrageentwurfsbereich angezeigt.
Klicken Sie in der Spalte Ort im Abfrageentwurfsbereich auf die Zeile Kreuztabelle und dann auf Zeilenüberschrift .
Dadurch werden Stadtwerte als Zeilenüberschriften angezeigt (d. h. die Abfrage gibt eine Zeile für jede Stadt zurück).
Klicken Sie in der Spalte Jahr auf die Zeile Kreuztabelle und dann auf Spaltenüberschrift .
Dadurch erscheinen Jahreswerte als Spaltenüberschriften (d. h. die Abfrage gibt eine Spalte für jedes Jahr zurück).
Klicken Sie in der Spalte Umsatz auf die Zeile Kreuztabelle und dann auf Wert .
Dadurch werden Verkaufswerte am Schnittpunkt von Zeilen und Spalten angezeigt (d. h. die Abfrage gibt einen Verkaufswert für jede Kombination aus Stadt und Jahr zurück).
Klicken Sie in der Spalte Sales auf die Zeile Totals und dann auf Sum .
Dadurch summiert die Abfrage die Werte in dieser Spalte.
Sie können die Zeile Summen für die anderen beiden Spalten auf dem Standardwert Gruppieren nach belassen , da Sie jeden Wert für diese Spalten sehen möchten, nicht aggregierte Werte.
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen .
Sie haben jetzt eine Abfrage, die den Gesamtumsatz nach Jahr in Rio de Janeiro und São Paulo zurückgibt.
Zeigen Sie alle Datensätze aus zwei ähnlichen Tabellen an
Manchmal möchten Sie Daten aus zwei Tabellen kombinieren, die strukturell identisch sind, sich aber in einer anderen Datenbank befinden. Betrachten Sie das folgende Szenario.
Angenommen, Sie sind ein Analyst, der mit Studentendaten arbeitet. Sie starten eine Initiative zum Datenaustausch 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, wäre es besser, alle Aufzeichnungen von beiden Schulen zusammen zu betrachten, als die Aufzeichnungen jeder Schule separat.
Sie könnten die Daten der anderen Schule in neue Tabellen in Ihrer Datenbank importieren, aber dann würden sich Änderungen an den Daten der anderen Schule nicht in Ihrer Datenbank widerspiegeln. Eine bessere Lösung wäre es, eine Verknüpfung zu den Tabellen der anderen Schule herzustellen und dann Abfragen zu erstellen, die die Daten kombinieren, wenn Sie sie ausführen. Sie könnten die Daten als einen einzigen Satz analysieren, anstatt zwei Analysen durchzuführen und zu versuchen, sie so zu interpretieren, als wären sie eine.
Um alle Datensätze aus zwei Tabellen mit identischer Struktur anzuzeigen, verwenden Sie eine Union-Abfrage.
Union-Abfragen können nicht in der Entwurfsansicht angezeigt werden. Sie erstellen sie mithilfe von SQL-Befehlen, die Sie auf einer Objektregisterkarte einer SQL-Ansicht eingeben.
Erstellen Sie eine Union-Abfrage, indem Sie zwei Tabellen verwenden
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf .
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Abfragetyp auf Union .
Die Abfrage wechselt von der Entwurfsansicht in die SQL-Ansicht. Zu diesem Zeitpunkt ist die Objektregisterkarte der SQL-Ansicht leer.
Geben Sie in der SQL-Ansicht SELECT ein, gefolgt von einer Liste der Felder aus der ersten der Tabellen, die Sie in der Abfrage haben möchten. Feldnamen sollten in eckige Klammern eingeschlossen und durch Kommas getrennt werden. Wenn Sie mit der Eingabe der Feldnamen fertig sind, drücken Sie die EINGABETASTE. Der Cursor bewegt sich in der SQL-Ansicht eine Zeile nach unten.
Geben Sie FROM ein, gefolgt vom Namen der ersten der Tabellen, die Sie in der Abfrage haben möchten. Drücken Sie Enter.
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 zusätzliche Kriterien am Ende der WHERE-Klausel hinzufügen, indem Sie das AND-Schlüsselwort und dieselbe Syntax wie für das erste Kriterium verwenden; B. WHERE [ClassLevel]="100" UND [CreditHours]>2. Wenn Sie mit der Angabe der Kriterien fertig sind, drücken Sie die EINGABETASTE.
Geben Sie UNION ein, und drücken Sie dann die EINGABETASTE.
Geben Sie SELECT ein, gefolgt von einer Liste der Felder aus der zweiten Tabelle, die Sie in der Abfrage haben möchten. Sie sollten aus dieser Tabelle dieselben Felder wie aus der ersten Tabelle und in derselben Reihenfolge einbeziehen. Feldnamen sollten in eckige Klammern eingeschlossen und durch Kommas getrennt werden. Wenn Sie mit der Eingabe der Feldnamen fertig sind, drücken Sie die EINGABETASTE.
Geben Sie FROM gefolgt vom Namen der zweiten Tabelle ein, die Sie in die Abfrage einbeziehen möchten. Drücken Sie Enter.
Fügen Sie bei Bedarf eine WHERE-Klausel hinzu, wie in Schritt 6 dieses Verfahrens beschrieben.
Geben Sie ein Semikolon ( ; ) ein, um das Ende Ihrer Abfrage anzuzeigen.
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen .
Ihre Ergebnisse werden in der Datenblattansicht angezeigt.
No comments:
Post a Comment