Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Access: Abfragen mit SQL

Tabellen aneinanderreihen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit UNION ALL können Sie Datensätze aus verschiedenen Tabellen einfach hintereinander auflisten, auch wenn die Tabellen inhaltlich nichts miteinander zu tun haben.

Transkript

In diesem Datenmodell gibt es zwei Stellen, wo Adressen vorkommen. Das ist nicht ungewöhnlich, das sind typischerweise Kunden, Lieferanten, Mitarbeiter, in diesem Fall sind es Mitarbeiter und Schüler. Auf den ersten Blick scheinen die Tabellen sehr ähnlich, sodass man sich fragt, warum ich die nicht in die gleiche Tabelle schreibe, aber im wirklichen Leben werden hier zu den Mitarbeitern bedeutend mehr Daten gespeichert. Und da ist z.B. nur die Kontoverbindung, und bei den Schülern vielleicht noch andere Informationen. Also, es gibt zwei Stellen mit Tabellen, die beide Adressen haben. Und ich möchte denen jetzt zu Weihnachten einen netten Brief schreiben, über die Zukunft der Musikschule. Natürlich in einer Liste, ich möchte nicht zwei Tabellen abfragen müssen. Das ist im Grunde ein kompletter Widerspruch zu alledem, was ich bisher gemacht habe. Zwischen diesen Tabellen gibt es einfach keine Beziehung. Wenn ich die nebeneinander in eine einzige Abfrage aufnehme, dann kriege ich das gefürchtete Kreuzprodukt, das heißt, jede Mitarbeiter-Adresse wird mit jeder Schüler-Adresse multipliziert. Das will ich nicht. Ich will eine Liste beider Adressen hintereinander. Die Lösung zu diesem Problem besteht in einer UNION-Abfrage. Das sind beliebig viele Abfragen, die hintereinander ausgeführt werden. Also, ich kann mit einem ganz normalen SELECT-Statement anfangen, und hier jetzt festlegen, auf welche Tabelle ich mich beziehe. Also, zuerst auf die Tabelle "Mitarbeiter". Einzige Bedingung in Access ist, dass die Anzahl der Spalten identisch ist. Das ist bei diesen Tabellen nicht so, vor allem sind die in unterschiedlicher Reihenfolge, daher werde ich die besser ausdrücklich benennen, also hier mit den Feldern, die heißen könnten: Ich nehme erstmal nur "NameKomplett", und eventuell die weitere Adresse. Im Grunde kann ich sie auch schon hier eintragen, das spart mir ein wenig Schreibarbeit, also auch hier noch die Straßennummer, die Postleitzahl, und den Ort. Das wäre dann geeignet, um bspw. in einem Word-Serienbrief darauf zuzugreifen. Ich gucke erstmal den ersten Teil an, der wird, wenig überraschend, funktionieren. Hier stehen alle Mitarbeiter, 29 an der Zahl, mit ihren Adressen. Jetzt kommt die entscheidende Änderung. Nämlich hier das Schlüsselwort "UNION ALL", und ein zweites "SELECT" hinterher. Dieses bezieht sich diesmal auf die Schüler, also die Tabelle "Schueler". Und hier muss ich jetzt einfach die entsprechenden Felder ergänzen. Also auch hier gibt es ein "schueNameKomplett", dann gibt es ein "schueStrasseNr", das hätte ich auch von oben kopieren können, weil die bei mir sehr ähnlich heißen, und einen "schueOrt". Und wenn Sie jetzt nochmal gucken, das waren 29 Mitarbeiter, und nach dem Ausführen, Aktualisieren, haben Sie jetzt hier 554, nämlich die 525 Schüler plus die Mitarbeiter. UNION ALL sorgt dafür, dass die alle hintereinander stehen, bei Access sogar völlig egal, welchen Datentyp die haben, und an dieser Stelle sich wie eine einzige Tabelle verhalten. Sie können noch ein weiteres UNION ALL und SELECT hinten ranschreiben. Damit ich es einmal komplett mache, wenn es ein Semikolon gibt, dann nur ein einziges am Ende aller SELECT-Anweisungen, also nicht hinter jedem SELECT. Sie können sogar für jede der beteiligten Tabellen noch vermerken, das geht mit einer berechnenden Funktion, aus welcher Datenquelle die kommt. Z.B. könnte ich hier schreiben "Mitarbeiter", und er findet natürlich einen Feldnamen, "AS Quelle", schreibe ich mal. Und hier, das sind Schüler innerhalb der Gänsefüßchen darf ich ohne Probleme Umlaute benutzen, "AS", und ich nenne das mal deutlich "AndereQuelle". Es dürfte auch "Quelle" heißen, das mache ich aber im Normalfall so, aber ich kann Ihnen bei der Gelegenheit zeigen, was eigentlich mit den Überschriften passiert. Wenn Sie das jetzt ausführen, gibt es ein neues Feld. Sie können jetzt hier nach unten fahren. Da sehen Sie, hier ist zu jeder Tabelle angezeigt, wo die Daten herkommen. Und das ist nämlich das Geheimnis einer UNION-Abfrage, die erste Abfrage gewinnt. Das heißt, wenn ich die Feldnamen nicht hier fälschlich mitbenennen möchte, dann sollte ich jetzt hier hinschreiben: "AS NameKomplett". Und hier: "AS StrasseNr" würde ich das benennen. Und da "AS PLZ". Entsprechend "AS Ort". Und hier würde ich dann tatsächlich, da muss irgendein Name stehen, den gleichen benutzen, theoretisch könnten Sie da auch "AS X" schreiben. Der ist relativ belanglos. Alle folgenden Feldnamen von den nächsten Abfragen werden ignoriert, das wird – wenn ich das jetzt ausführe, sehen Sie das – unter den Feldnamen der ersten Abfrage behandelt. Und das bedeutet nämlich, wenn Sie sortieren wollen, dann kommt hier hinten noch ein "ORDER BY", und sagen wir mal, nach dem Ort, weil das so schön kurz ist, dann müssen Sie sich auf "Ort" beziehen, das ist der Name der gesamten Spalte, so wie es nämlich da oben umbenannt wurde. Es ist nicht mehr "mitarOrt", oder "schueOrt" oder sowas, sondern es ist wirklich nur der Ort, und jetzt ist es hier nach dem Ort sortiert, wie verlangt, also eine UNION ALL-Abfrage, oder allgemeiner: eine UNION-Abfrage, die kann mehrere Abfragen hintereinander schreiben, als ob es sich um eine einzige Tabelle handelt.

Access: Abfragen mit SQL

Nutzen Sie die mächtige Abfragesprache SQL in Microsoft Access. Anhand einer Beispiel-Datenbank lernen Sie die Möglichkeiten und Finessen von SQL im Detail kennen.

3 Std. 14 min (64 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training ist für alle Access-Versionen verwendbar. Das vermittelte SQL-Wissen lässt sich mit geringen Abweichungen auch für andere relationale Datenbanksysteme nutzen.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!