Vielleicht wirst Du mit der Relationalen Algebra erklärung glücklich:
http://de.wikipedia.org/wiki/Relationale_Algebra#Join
Ein Join ist ein Kreuzprodukt der Tabellen mit einer anschließenden (algebraischen) Selektion ("Filterung" der Tupeln).
Das sind die bekannten "inner joins" - Krezugverbund nach Kriterien. Wobei dann zwischen "equi" und "natural" Joins unterschieden wird (bei equi gibt man die Bedingung an, bei natural wird die "natürliche" Bedingung genommen - also die gleichnamigen Spalten vergichen).
Nicht alle DBMS bieten diese Joins an. DB2 z.B kennt glabe ich keine NATURAL JOINS - nur EQUIs .
Denn JOINS kann man in SQL auch mit
SELECT * FROM x,y WHERE x.bla=y.foo
nachbauen.
Outer Joins sind eine "Erweiterung" und manchmal sinnvoll. Dabei werden die Tupeln wie bei "inner"Join verglichen, allerdings je nach Angabe (LEFT/RIGHT/FULL) auch Tupeln aus der Linken/Rechten/Beiden Tabellen mit ins Ergebnis reingenommen, die keinen "Partner" haben.Ob "Links", "Rechts" oder "Full" wird durch die Angabe bei JOIN unterschieden
myTable LEFT OUTER JOIN otherTable ON bla
bzw sollte aus der UML Notation auch sichbar sein.
D.h dass man dann alle Einträge aus der linken Tabelle mindestens einmal im Ergebnis wiederfindet.
Ein sinnvolles Beispiel für die Verwendung:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
StudiTab
Name, MatNr
N1, 123
N2, 124
N4, 125
TestErgebnisDBS
MatNr, bestanden
124, TRUE
123, FALSE
Wir wollen Gesamtergebniss des Test anzeigen um Liste mit Zulassungen für die Klausur auszuhängen:
SELECT MatNr,Ergebnis FROM StudiTab LEFT OUTER JOIN TestErgebnisDBS
ON StudiTab.MatNr=TestErgebnisDBS.MatNr
Das wird ausgehangen:
MatNr, Ergebnis
124, TRUE
123, FALSE
125, NULL
Legende: TRUE = zugelassen, FALSE=nicht zugelassen, NULL = nicht teilgenommen= nicht zugelassen
Zugegeben, die Leute hatten einen Sinn für Humor ;)
|
Also OUTER Joins - wenn man die Information aus der Tabelle für noch was anderes braucht. Weiteres Beispiel:
http://sqlcourse2.com/cgi-bin/sqlcmd-sql…rid%29%3B%0D%0A
Tabellen dazu
http://sqlcourse2.com/items_ordered.html
http://sqlcourse2.com/customers.html
Hier werden Bestellungen aller Benutzer aufgelistet und zusätzlich auch Benutzer ins Ergebnis hineingenommen, die nichts bestellt haben - das kann dann für irgendwelche Zwecke intern verwendet werden (Statistiken usw).