Abfragen [basics]: Verknüpfte und unverknüpfte Tabellen gezielt nutzen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Abfragen sind nicht darauf beschränkt, nur Felder aus einer Tabelle auszugeben oder nach Feldern aus einer Tabelle zu sortieren oder zu filtern. Wir können auch mehrere Tabellen in einer Abfrage zusammenfassen und die Daten dieser Tabellen ausgeben, filtern und sortieren. Dabei gibt es verschiedene Möglichkeiten: Wir können alle Kombinationen aus Daten verschiedener Tabellen ausgeben, wir können nur die verknüpften Datensätze von Tabellen liefern oder auch die Daten einer Tabelle liefern – unabhängig davon, ob in der verknüpften Tabelle auch verknüpfte Datensätze zur ersten Tabelle vorhanden sind. All diese Techniken schauen wir uns im vorliegenden Artikel an.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank AbfragenBasics_VerknuepfteUndUnverknuepfteTabellenGezieltNutzen.accdb.

Beliebige Kombinationen aus den Daten zweier Tabellen ermitteln

Dies ist zum Beispiel sinnvoll, wenn Du alle möglichen Datumsangaben bestehend aus Monaten und Jahren kombinieren möchtest. Dazu benötigen wir eine Tabelle namens tblJahre, die alle anzuzeigenden Jahre enthält, und eine namens tblMonate, welche die zwölf Monate beisteuert. Wir erstellen die beiden Tabellen, und um Zeit zu sparen, lassen wir die Werte per VBA eintragen. Erst einmal die Monate, wobei wir die Nummer des Monats von 1 bis 12 eintragen und den Namen des Monats mit der VBA-Funktion MonthName ermitteln und in das Feld Monatsname eintragen:

Public Sub MonateSchreiben()
     Dim db As DAO.Database
     Dim i As Integer    
     Set db = CurrentDb
     For i = 1 To 12
         db.Execute "INSERT INTO tblMonate(Monat, " _
             & "Monatsname) VALUES(" & i & ", '" _
             & MonthName(i) & "')", dbFailOnError
     Next i
End Sub

Danach schreiben wir die Jahre in die Tabelle tblJahre, hier für die Jahre von 2020 bis 2030:

Public Sub JahreSchreiben()
     Dim db As DAO.Database
     Set db = CurrentDb    
     Dim i As Integer
     For i = 2020 To 2030
         db.Execute "INSERT INTO tblJahre(Jahr) " _
             & "VALUES(" & i & ")", dbFailOnError
     Next i    
End Sub

Die beiden Prozeduren können wir einfach in ein Standardmodul schreiben und mit F5 ausführen.Damit erhalten wir die Tabellen wie in Bild 1.

Tabellen mit Monaten und Jahren

Bild 1: Tabellen mit Monaten und Jahren

Wir wollen nun in einer Abfrage alle Kombinationen aus Monaten und Jahren ausgeben, und zwar aufsteigend sortiert nach dem Jahr und dem Monat. Die Felder sollen aber in der Reihenfolge Monat/Jahr ausgegeben werden.

Dazu erstellen wir eine neue, leere Abfrage in der Entwurfsansicht und ziehen die beiden Tabellen tblMonate und tblJahre hinein. Damit erreichen wir, dass die Abfrage grundsätzlich jede Kombination aus Monaten und Jahren ausgibt. Damit sie auch in Abfrageergebnis erscheinen, fügen wir die beiden Felder Monat und Jahr zum Entwurfsraster hinzu. Wenn wir nun in die Datenblattansicht wechseln, sehen wir die Daten allerdings in der Standardsortierung, also zunächst aufsteigend nach dem Monat und dann nach dem Jahr. Wir wollen aber, dass zuerst 1-2020, 2-2020 und so weiter angezeigt werden.Dazu fügen wir das Feld Monat ein weiteres Mal hinzu und sortieren dann aufsteigend nach der zweiten und der dritten Spalte, also erst nach dem Jahr und dann nach dem Monat. Da die dritte Spalte nur als Sortierkriterium dient und nicht angezeigt werden soll, entfernen wir den Haken in der Zeile Anzeigen für diese Spalte (siehe Bild 2).

Abfrage zur Kombination von Monaten und Jahren

Bild 2: Abfrage zur Kombination von Monaten und Jahren

Die Datenblattansicht sieht nun wie in Bild 3 aus.

Anzeige von Monaten und Jahren in der gewünschten Reihenfolge

Bild 3: Anzeige von Monaten und Jahren in der gewünschten Reihenfolge

Anzeige von Monatsname und Jahr

Im nächsten Beispiel wollen wir die gleichen Daten im Format Januar 2020, Februar 2020 und so weiter anzeigen. Dazu verwenden wir den Entwurf aus Bild 4.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar