Access: Abfragen mit SQL

Tabellen mit sich selbst verknüpfen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine so genannte Reflexiv-Verknüpfung ist ein Bezug einer Tabelle auf sich selbst. In diesem Fall werden damit die Geschwister von Schülern gefunden.

Transkript

Eine typische Datenbank wie diese hier hat ganz viele 1-zu-n-Beziehungen zwischen den Tabellen. Aber diese 1-zu-n-Beziehung ist eine besondere. Und zwar nicht wegen der Beziehung selber, sondern wegen der beteiligten Tabellen. Diese Tabelle "Schüler" existiert physikalisch einmal, wird hier aber zwei Mal genannt, nämlich mit einem Alias. Der könnte da auch anders lauten. Einfach deswegen, weil es eine sogenannte Reflexivbeziehung ist. Eine Beziehung der Tabelle mit sich selbst. Ganz viele Schüler haben in diesem Feld mit der Referenz auf ein anderes Schüler-ID-Feld einen Null-Wert, also nichts drinstehen. Einige wenige verweisen dort auf die ID eines anderen Schülers, nämlich ihres älteren oder zumindest zuerst angemeldeten Geschwisterkindes. Und noch weniger, das sieht man den einzelnen Daten gar nicht an, noch weniger Datensätze haben sogar einen Verweis auf ein Geschwisterkind, welches selber einen Verweis auf ein Geschwisterkind hat. Auf deutsch: die sind drittes Kind. Das erste Kind hat also keine Eintragung hier. Das zweite ist dasjenige, das einen Eintrag auf ein Erstkind ohne Eintrag hat. Und es könnte auch dritte und beliebig viele weitere geben. Diese Reflexivbeziehung können Sie mit einem OUTER JOIN auflösen und herausfinden, ob ein Kind Geschwisterkinder hat, und welche das sind. Um also diese beiden Tabellen zu untersuchen, brauchen Sie ein SELECT mit einem JOIN. Die erste Tabelle wird die Tabelle "Schüler" sein. Also Tabelle 1 kann ich ersetzen durch "tblSchueler". Und die zweite Tabelle kann ich ebenfalls ersetzen, und sie wird auch tblSchueler sein. Das ist natürlich so in der Syntax erstmal nicht brauchbar, ich muss die in irgendeiner Form umbenennen. Ich kann also hier direkt schon dazu sagen, das ist die Tabelle "Geschwister". Und dann werde ich entsprechend festlegen, dass an dieser Stelle die Schüler eine ID haben, das ist also mein Erstgeschwisterkind sozusagen. Das ist eine Schüler-ID. Und hier, da können wir ein bisschen mehr löschen, da geht's darum, dass ein Geschwisterkind eine SchueID-Referenz hat. Hier oben will ich auch nicht von dem Schüler alles sehen, sondern der hat ein Name-Komplettfeld, das ist für diese Anzeige sehr bequem, da müssen Sie sich nicht alle Felder angucken. Und die zweite Tabelle, die da oben angezeigt werden soll, ist die Geschwister-Tabelle, tblGeschwister, und auch dort, die heißt ja nur anders, das ist technisch die gleiche Tabelle, gibt es ein "schueNameKomplett". Wenn ich mich jetzt nicht verschrieben habe, dann sehen Sie hier nur die Geschwisterkinder. Die Namen sind jetzt noch nicht so richtig schön, das könnte ich jetzt hier zum Beispiel umbenennen AS Kind1, und hier AS Kind2. oder Geschwisterkind, wie immer Sie das dann nennen wollen, dann wird das ein bisschen deutlicher, das ist das erstangemeldete, das das zweite, außer bei einigen wenigen, hier zum Beispiel sehen Sie einen, da ist das erste Kind Walter, das zweite heißt Andreas, das ist das Geschwisterkind, aber an dieser Stelle entdecke ich, dass es ein drittes gibt, nämlich Maria. Und aus der Sicht von Maria hat die ein älteres Geschwisterkind und kann in dieser Zeile noch nicht sehen, dass es sich da um nur ein Zweitkind handelt. Sie kriegen also über diese Reflexivverknüpfung auf die gleiche Tabelle immer nur die nächste Ebene raus. Das können Sie noch eine Ebene weiter treiben, dann entdecken Sie nämlich tatsächlich, dass die Damms drei Geschwister haben, indem Sie das auch für eine zweite Verknüpfung noch machen. Wenn ich also hier eine neue SQL-Anweisung einfüge, die ich schon in der Zwischenablage vorbereitet habe, dann lesen Sie jetzt tatsächlich, dass es eine Tabelle "Schueler" gibt, die habe ich schonmal als tblK3, Kind 3, benannt. Die ist verknüpft mit einer Tabelle "Schueler" wiederum, diesmal unter dem Namen "K2", über diese beiden Felder. Und das Ganze, da müssen Sie hier auf die Klammern achten, ist wiederum verknüpft mit einem INNER JOIN, mit der dritten Version von dieser Schueler-Tabelle, die ich hier als tblK1, das erste Kind, benannt habe. Also, Kind 2 ist mit Kind 3 verbunden, und Kind 1 mit Kind 2. Und entsprechend habe ich hier oben von Tabelle Kind 1 den Namen komplett als "Kind 1" bezeichnet, von Tabelle Kind 2 gibt es das Kind 2 als Name komplett, und Kind 3 entsprechend. Wenn ich das ausführe, dann finde ich nur noch die Geschwister mit drei Kindern. Und hier kann man jetzt erstmalig sehen, dass Maria einen Bruder Andreas hat, und der einen Bruder Walter, der offensichtlich zuerst angemeldet wurde. Entsprechend hier Werner, Frank-Peter und Eduard lassen sich nicht davon irritieren, dass hier ein anderer Nachname steht. Erstens sind es hier Testdaten, und zweitens ist das bei heutigen Patchwork-Familien sowieso üblich, also das ist inhaltlich korrekt, es gibt hier tatsächlich zwei Datensätze, bei denen sich drei Kinder finden. Und nur, wenn ich per Augenschein sehen würde, dass hier vorne Andreas Damms-Jonas nochmal auftauchen würde, in einer zweiten Zeile, nur dann könnte ich erkennen, dass die sogar ein viertes Kind hätten. Das kommt in diesen Daten nicht vor, aber es geht immer nur pro Ebene, das bedeutet, in dieser Version sehe ich nur erstes, zweites Kind, oder an manchen Stellen auch zweites, drittes Kind. Hier ist dieser Fall: erstes, zweites Kind, und das ist zweites, drittes Kind, und wenn Sie also wirklich alle drei Kinderfamilien sehen wollen, dann müssen Sie in diese Version umwechseln, und finden dann auch nur exakt die mit drei Kindern.

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!