Access 2016: Tabellen für Fortgeschrittene

Abfragen mit OuterJoin anlegen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Damit 1:1-Beziehungen benutzerfreundlich eingegeben werden können, ist die Abfrage mit einem OuterJoin sehr hilfreich. Dadurch scheint es für die Benutzer so, als befänden sich alle Daten in einer Tabelle.

Transkript

Hier für die Tabelle Gehälter gibt es eine 1:1 Beziehung. Also eine Person kann maximal ein Gehalt bekommen in dieser Liste. Die Eingabe ist, sagen wir es freundlich, schwierig. Ich kann natürlich hier, weil das eine Referenz, ein Fremdschlüssel ist, hier ein Kombinationsfeld einbauen. Das wäre auch nicht wirklich schlecht, aber es ist trotzdem lästig. Es geht besser. Und zwar mit einer speziellen Abfrage. Also hier das kann ich erst mal alles schließen. Und was ich anlegen möchte, ist eine neue Abfrage. Die zeigt genau diese beiden Tabellen also sowohl die Personen als auch die Gehälter. Und ich beschränke das mal auf ein paar wesentliche Teildaten. Die müssen nicht auf gleicher Höhe liegen, aber ich find's dann übersichtlicher. Also sagen wir die ID, den Vornamen, den Nachnamen und was brauchen wir noch? Reicht eigentlich, sagen wir ruhig hier die Bemerkung. Und auf der anderen Seite möchte ich diese ID sehen und den Betrag. Der Rest ist ja alles nur zufällige, beliebige Felder. Und das werde ich speichern als qryPersonenUndGehaelter. Was erwarten Sie jetzt, wie viele Datensätze Sie sehen? Wir können ja mal eben nachgucken. Es gibt bei den Personen 9 Personen. Alle Nummern 1 bis 9. Es gibt bei den Gehältern zwei Eintragungen für die Personen 1 und 6. Und die habe ich jetzt verbunden und wenn ich das in der Datenblattansicht sehe, dann sehe ich leider nur genau diese beiden Personen. Und damit habe ich jetzt ein grundsätzliches Problem. Ich würde ganz gerne für eine weitere Person das Gehalt hier eintragen. Das geht nicht, weil ich sie nicht sehe. Und das ist durchaus sinnvoll, denn diese Verbindung ist ein sogenannter INNER JOIN. Das ist einer der rechts wie links die gleichen Daten anzeigen muss. Wenn ich also eine persoID1 habe und hier eine gehaltpersoIDRef1 vorhanden ist, dann werden die angezeigt. Können wir gucken. Hier gibt's nur eins, da gibt's nur eins, alles gut. Die 6 gibt's hier, die gibt's dort auch, wird auch angezeigt. Die 2 gibt's auf der Perso-Seite, aber leider nicht beim Gehalt. Deswegen steht er hier gar nicht. Also im Entwurf ändere ich jetzt diese Beziehung, indem ich diesen Mittelteil der Linie doppelklicke und das ist das, was den INNER JOIN ausmacht, dass alles, was links und rechts gleich ist, angezeigt wird. Und es gibt das Gegenstück dazu OUTER JOINS. Davon gibt es zwei, einen Left und einen Right OUTER JOIN. Und ich kann sagen, ich will entweder alle Personen sehen, egal ob sie ein Gehalt haben. Das ist hier die Nummer 2. Das wechselt übrigens je nachdem in welche Richtung Sie gezogen haben. Verlassen Sie sich nicht darauf, dass es 2 ist. Lesen Sie diesen Text. Ich will alle Personen sehen und wenn es Gehälter gibt, sind die da. Oder, das ist der andere OUTER JOIN, ich will alle Gehälter sehen und falls es dazu Personen gibt, dann dürfen die angezeigt werden. Das ist unmöglich bei unserer Konstruktion. Wir sagen, die Person hat Vorrang und das Gehalt, wenn es denn eins gibt, wird angezeigt. Also es ist bei uns Nummer 2, alle Personen und wenn es gibt, die Gehälter. Das wird hier durch so einen Pfeil gekennzeichnet und wenn ich mir das jetzt angucke, sehen Sie, alle Personen und wenn es sie gibt, die Gehälter. Diese Spalten mit den IDs brauchen wir jetzt eigentlich nicht mehr, aber daran sehen Sie deutlicher, was existiert. Es gibt zwei Eintragungen. Das können wir gerne noch mal prüfen. Diese Gehälter-Tabelle besteht aus zwei Datensätzen. Und jetzt fällt mir ein, ach, Herr Müller, da muss ich ja auch noch das Gehalt eintragen. Ich gönne ihm mal was. Und wenn ich jetzt die Zeile verlasse, bemerken Sie erstens, dass hier eine Zahl aufgetaucht ist und wenn ich jetzt bei Tabelle Gehälter nachgucke, ist er da auch dabei. Das ist der Sinn dieser Abfrage. Ich sehe das so als wäre das Teil der Orginaltabelle. Ich würde also im wirklichen Leben diese Spalte weglassen, die geht keinen etwas an, da kann man eh nichts eintragen und nur dieses Feld gehalBetrag übernehmen und für einen Benutzer, der das überhaupt sehen darf, der könnte an dieser Stelle einfach sagen, ach, Herr Abel kriegt irgendwie ein Gehalt und merkt gar nicht, dass er da gerade in einer zweiten Tabelle eingetragen hat. Und das Ganze funktioniert bei einer 1:1 Beziehung nur mit einem OUTER JOIN, Doppelklick hier, der dafür sorgt, dass die, ich nenne sie mal weiterhin Mastertabelle hier alle Daten anzeigt und die untergeordnete 1:1 verknüpfte Tabelle nur dann, wenn es Daten gibt. Und das führt dazu, dass Sie an dieser Stelle Daten erzeugen. Diese Tabelle besitzt nur vier Datensätze. Hier ist gar kein Datensatz. Der entsteht erst, wenn Sie etwas reinschreiben. Und genau das ist es, was ich haben möchte.

Access 2016: Tabellen für Fortgeschrittene

Meistern Sie die hohe Kunst der Access-Tabellen. Lernen Sie, Tabellen mit speziellen Datentypen, berechneten Felder, Indizes und Verknüpfungen weiterzuentwickeln.

2 Std. 32 min (27 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:13.03.2017

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!