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

Office 365: Access Grundkurs

Outer Join

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Um auch Daten ohne Referenz in anderen Tabellen anzeigen zu können, nutzen Sie "Outer Joins". So lassen sich diejenigen Speisen finden, die noch niemals verkauft wurden.

Transkript

Wenn ich herausbekommen will, welche Gerichte von meiner Speisekarte gut laufen, vielleicht sogar wie gut, dann ist so relativ einfach. Ich erstelle einen Abfrageentwurf, nehme die Speisen, erstmal nur die Speisen auf und gucke mal auf deren Menge, also NameKurz ist eindeutig genug, gucke mir die Ansicht an und zähle hier 18 Gerichte. Jetzt will ich wissen, wie gut die laufen, das heißt, ich muss mit der ''Portionierung'' zusammenarbeiten, also eine neue Tabelle aufnehmen, weil nur dort bei den Portionen nachzusehen ist wie viele es gab, nämlich hier in portiMenge, will also für diesen Namen die Summe, deswegen muss ich das hier aktivieren, für portiMenge einschalten, das ginge auch mit einem Doppelklick hier und dann kann ich es gleich absteigend sortieren, das sind zwei Doppelklicks und kann jetzt hier in der Ansicht sehen: Pizza Margherita, Spaghetti Bolognese läuft super, Pizza Pollo und Penne con Agnello eher nicht. Das sind meine erfolgreichen Speisen und hier steht sogar wie erfolgreich. Wenn Sie jetzt hier unten gucken, werden Sie feststellen, aus den ursprünglich 18 Speisen sind nur noch 16 übrig geblieben. Die kann ich schon mal speichern, das ist die qrySpeisenErfolgreich und stelle jetzt fest, es gibt offenbar zwei Gerichte, die nicht so erfolgreich laufen, genaugenommen nämlich gar nicht. Die zu finden funktioniert plötzlich ganz anders. Sie haben gesehen, wenn ich hier die zweite Tabelle aufnehme, die Portionen nämlich, dann reduziert sich sofort die Anzahl der Datensätze. Und da liegt das Problem und deswegen baue ich diese Abfrage neu auf, also ErstellenAbfrageentwurf. Ich nehme wiederum "Speisen" Doppelklick und "Portionen" und auch hier wiederum NameKurz und dann nehme ich mal ausnahmsweise dieses Feld, damit sie das gleich deutlicher sehen, nehme ich den "Fremdschlüssel". Jetzt sind noch alle Portionen da, ich muss die natürlich zusammenfassen, gruppieren, also wir können das erstmal so lassen, hier sind genau diese 16 zu sehen. Diese ist jetzt der Fremdschlüssel, nicht die Anzahl der verkauften Portionen, aber das Problem ist, dass hier die zwei fehlenden nicht erscheinen. Jedenfalls nicht bis ich was grundsätzlich geändert haben. Wenn ich in der Entwurfsansicht diesen Verbindungspfeile nehme und Doppelklicke, dann sehen Sie was dahinter steckt. Das ist ein sogenannter INNER JOIN, der Normalfall einer Beziehung. Den nenne ich auch schon mal symmetrisch. Der hat links wie rechts die gleichen Werte. Alle Datensätze, bei denen die Inhalte der verknüpften Felder beider Tabellen gleich sind. Wenn links eine eins steht, dann muss rechts auch eine eins stehen. Und das ist was das implizite Filtern hier verursacht. Es gibt bestimmte Fremdschlüssel, die nie vorkommen. Ich sag mal die Nummern 15 und 17. Und weil die Nummer 15 und 17 hier nie vorkommen, wird die auch auf dieser Seite nicht mehr angezeigt und das ist das, was den Filter ausmacht. Es gibt zwei Alternativen dazu, die beide OUTER JOIN sind. Zum einen den LEFT OUTER JOIN und den RIGHT OUTER JOIN, aber die Richtung ist eigentlich nicht so wichtig, hier dieser Satz sagt das Wesentliche: Ich will entweder alle Speisen, oder alle Portionen sehen und wenn es dazu Gegenstücke mit Lücken gibt, dann eventuell auch. Als ich kann sehen alle Speisen, alle 18 um es schonmal zu erwähnen, und wenn es dort eine Portion gibt, dann ist das in Ordnung, wenn nicht steht da eben einen NULL-Wert. Ich könnte alternativ auch verlangen "alle Portionen" und falls es bei den Speisen kein Gegenstück gibt, dann stünde dort ein NULL-Wert. Dank unserer referentiellen Integrität ist das völlig ausgeschlossen, denn denn das wäre ein verweister Datensatz, ein Fremdschlüssel ohne Gegenstück. Das ist durchaus typisch in einer Datenbank mit referentieller Integrität, dass eine von den beiden, die wechseln schonmal die Reihenfolge, nicht funktionieren darf. Was ich also haben möchte ist alle Speisen, egal ob es eine Portion dazu gibt. Und nachdem OK, gucken wir uns das Gleiche normal an, Sie sehen jetzt, da ist ein Pfeil entstanden und da sind jetzt tatsächlich alle 18 Speisen und zwei davon haben keinen Fremdschlüssel, den Sie anzeigen können. Und die hätte ich gerne. Das heißt, ich kann jetzt filtern da steht nämlich einen NULL-Wert drin, es gibt kein Gegenstück, es ist also nichts dort und deswegen werde ich jetzt auf NULL filtern, damit bleiben diese beiden übrig und da es auf dieser Seite auch nichts zu gruppieren gab, es gibt keine mehreren Portionen, kann ich sogar, das beschleunigte mich wieder, auf wenn man das bei zwei Datensätzen sowieso nicht merkt, kann ich jetzt auch die Gruppierung wieder rausnehmen und sehe jetzt hier tatsächlich, das sind die beiden Speisen, die nicht laufen. Und im Grunde kann ich auch hier die Anzeige entfernen, da gibt es nichts anzuzeigen außer einem NULL-Wert und das Ganze sind jetzt qrySpeisenErfolglos. Also der Unterschied zwischen einem normalen INNER JOIN oder einem von den beiden OUTER JOINs besteht darin, dass Sie einen Doppelklick auf die Zwischenlinie machen und sich für Nummer zwei oder drei entscheiden und das bedeutet dann, dass auf einer der beiden Seiten NULL-Werte erscheinen dürfen und die können Sie dann, meistens möchte man nur die haben, wegfiltern.

Office 365: Access Grundkurs

Erwerben Sie die notwendigen Kenntnisse, um mit Access in Office 365 leistungsfähige Datenbanken zu erstellen.

6 Std. 18 min (75 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:08.09.2016

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!