Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Inner und Outer Join anschaulich
zurück: ISO Wochennummer berechnen weiter: Dateien umbenennen in Serie (z.B. Bilddateien) Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
tk6
SAP-Consultant


Verfasst am:
23. Okt 2009, 15:45
Rufname:

Inner und Outer Join anschaulich - Inner und Outer Join anschaulich

Nach oben
       Version: (keine Angabe möglich)

1. Was ist ein Inner Join, was ein Outer Join?

Was ist ein Inner Join, was ein Outer Join und wie kann man sich das anschaulich klarmachen?

Im folgenden will ich versuchen, diese Anschaulichkeit durch ein konkretes Beispiel und ein "Gedanken-Bild" herzustellen.

2. INNER JOIN
2.1 Das Beispiel
Das Beispiel ist angehängt.

2.2 Das Gedanken-Bild - ein bildlicher Vergleich mit dem "wirklichen Leben"
Den Join-Mechanismus können wir uns anhand von zwei "Tabellen-Verwaltern" vorstellen, die miteinander kommunizieren.
Beide verfügen über eine dicke Kladde, in der alle Datensäzte ihrer Tabellen in der Reihenfolge ihres Primärschlüssels
sauber hintereinander aufgeschrieben sind.

Für Abfragen gibt es einen weiteren Verwalter. Dieser versendet einen Befehl an seine Kollegen:
Code:
SELECT tbl_Tab1.T1F1_PK, tbl_Tab1.T1F2, tbl_Tab1.T1F3, tbl_Tab2.T2F3, tbl_Tab2.T2F4
FROM tbl_Tab1 INNER JOIN tbl_Tab2 ON tbl_Tab1.T1F1_PK=tbl_Tab2.T2F2_T1F1_FK;


Aus diesem Befehl entnehmen nun die beiden Tabellenverwalter ihre Aufgaben:

1. Sie setzen sich gemeinsam an einen Tisch und nehmen sich jeweils ein großes
Blatt vor und ihre beiden Tabellen-Kladden.
2. Für den TabVerwalter für Tab1 bedeutet der Befehlsteil
Code:
SELECT tbl_Tab1.T1F1_PK, tbl_Tab1.T1F2, tbl_Tab1.T1F3
daß er sich das leere Blatt
nimmt und den ersten Datensatz aus seinem Buch aufschreibt. Allerdings mit zwei
Einschränkungen:
- Bevor er überhaupt anfängt, fragt er den Tab2-Verwalter: "Hast du beim
Fremdschlüssel "tbl_Tab2.T2F2_T1F1_FK"
überhaupt Einträge?" Ist das nicht der Fall, ist die ganze Aktion nämlich schon beendet, denn ein INNER JOIN kann
nur ausgeführt werden, wenn die Join-Bedingung
Code:
ON tbl_Tab1.T1F1_PK = tbl_Tab2.T2F2_T1F1_FK
überhaupt erfüllt sein kann d.h., wenn es Einträge zu dem entsprechenden Wert in beiden Tabellen gibt.
Dann fragt er weiter: "... wenn ja, hast du 1?" Der 1. Eintrag in seinem Buch hat
nämlich den Primärschlüssel 1.
Hat der Tab2-Verwalter den nicht, geht es weiter mit dem nächsten Datensatz.
- Beide Verwalter schreiben grundsätzlich nur die Felder heraus, die in der Select-Anweisung aufgeführt werden,
lediglich die Fremdschlüssel werden zusätzlich herausgeschrieben.
3. Sobald der Tab2-Verwalter also "Treffer" meldet, schreibt der Tab1-Verwalter einen DS,
aber nur die drei angegebenen Felder auf seine Liste. Übrigens: Damit es schneller
geht, hat der Tab2.Verwalter in ein kleines Notizheft eine nach den Fremdschlüsseln sortierte Tabelle
mit nur zwei Feldern: Fremdschlüssel und Primärschlüssel seiner eigenen
Tabelle (nennt man Index).
4. Gleichzeitig schreibt der Tab2-Verwalter auf seine Liste seinen Primärschlüssel, den Fremdschlüssel und die zwei zu
selektierenden Felder heraus. Das macht er für alle Datensätze, in denen der Fremdschlüssel auftaucht.
5. Am Ende haben sie zwei Listen, meistens eine kürzere (Tab1) und eine längere (Tab2). Die beiden Listen sind beide nach
dem JOIN-Feld (PS und FS) geordnet.
Die übergeben sie dem Abfrageverwalter und der "klebt" die Datensätze zusammen, wie man es auf der Abbildung
sieht.

3. OUTER JOIN

Beim Outer Join ist es erstmal genauso, mit einer kleinen Änderung. Je nachdem, welche Join-Variante durch das wort "Left" oder "right" vorgegeben ist, läuft es unterschiedlich. Was sie zu tun haben, steht in dem Pop-Up, welche aufgeht, wenn wir in der Entwurfsansicht mit der Rechten Maustaste auf die Linie klicken und dann auf "Verknüpfungseigentschaften". Es ist in Abb. 2 abgedruckt.

Ist ein Outer Join gefordert, muß Punkt 2. oder 3. markiert werden. Und je nachdem, was markiert ist, richtet sich die etwas andere Arbeitsweise...

Ist nämlich gefordert, daß aus Tab1 alle Datensätze geliefert werden sollen, fängt Tab1-Verwalter an, sonst der andere.

Bis auf einen Schritt läuft dann alles gleich: Der "Anfänger" fragt jetzt nicht mehr vorab, ob der anderen den Fremdschlüssel auch tatsächlich "hat". Er soll ja "alle Datensätze" schreiben. Wo sein Kollege "fehlt" meldet, macht er sich nur ein kleines Kreuzchen, damit der Abfrageverwalter später weiß, daß er dort keinen Datensatz aus der anderen Tabelle ankleben kann, weil es keinen gibt.

_________________
Beste Grüße

tk



shot_1_0202.JPG
 Beschreibung:
Abb. 1
 Dateigröße:  145.65 KB
 Angeschaut:  3712 mal

shot_1_0202.JPG



join.JPG
 Beschreibung:
Abb. 2
 Dateigröße:  51.42 KB
 Angeschaut:  3711 mal

join.JPG


Willi Wipp
Moderator


Verfasst am:
30. Apr 2010, 02:51
Rufname:
Wohnort: Raum Wiesbaden


AW: Inner und Outer Join anschaulich - AW: Inner und Outer Join anschaulich

Nach oben
       Version: (keine Angabe möglich)

{Dieser Beitrag nimmt das Thema aus den unbeantworteten Themen heraus}
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: JOIN auf selbe Tabelle 0 Gast 388 08. Dez 2008, 19:00
lady111 JOIN auf selbe Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Paarweiser Vergleich - Self Join ohne Doppelte 1 werder 2842 20. Mai 2008, 06:58
Nouba Paarweiser Vergleich - Self Join ohne Doppelte
Keine neuen Beiträge Access Tabellen & Abfragen: Aktualisierungsabfragen mit Bedingung und Join 8 Falcon 1909 03. März 2008, 16:57
Falcon Aktualisierungsabfragen mit Bedingung und Join
Keine neuen Beiträge Access Tabellen & Abfragen: Left join auf 2Spalten, ausgabe in einer Spalte 1 nowit 703 19. Feb 2008, 08:30
nowit Left join auf 2Spalten, ausgabe in einer Spalte
Keine neuen Beiträge Access Tabellen & Abfragen: UPDATE mit INNER JOIN 5 Reiner 12758 18. Jan 2008, 18:49
Willi Wipp UPDATE mit INNER JOIN
Keine neuen Beiträge Access Tabellen & Abfragen: 3 Tabellen mit UNION und INNER JOIN abfragen 2 flysly 3734 14. Dez 2007, 14:24
Willi Wipp 3 Tabellen mit UNION und INNER JOIN abfragen
Keine neuen Beiträge Access Tabellen & Abfragen: 2x left outer join 4 Nju 1096 23. Okt 2007, 14:09
Nju 2x left outer join
Keine neuen Beiträge Access Tabellen & Abfragen: Access - Fehler bei Unterformular und SQL LEFT JOIN 1 kontextfrei 1526 01. Okt 2007, 18:03
kontextfrei Access - Fehler bei Unterformular und SQL LEFT JOIN
Keine neuen Beiträge Access Tabellen & Abfragen: JOIN oder UNION oder was ganz anderes??? 1 Gast 398 19. Jul 2007, 23:48
Nouba JOIN oder UNION oder was ganz anderes???
Keine neuen Beiträge Access Tabellen & Abfragen: INNER JOIN mit mehreren ON-Abschnitten 2 andreczogalla 683 13. Jun 2007, 13:20
andreczogalla INNER JOIN mit mehreren ON-Abschnitten
Keine neuen Beiträge Access Tabellen & Abfragen: Inner Join über 3 riesige Tabellen (ODBC) 3 elimin8tor 1006 08. Apr 2007, 00:11
Gast Inner Join über 3 riesige Tabellen (ODBC)
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage Left Join löscht aus falscher Tabelle 3 ggh 1798 01. Feb 2007, 14:49
Willi Wipp Abfrage Left Join löscht aus falscher Tabelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project