Aus Wikibooks
Ein Join (zu deutsch Verbund) bezeichnet die beiden hintereinander ausgeführten Operationen „Kartesisches Produkt“ und „Selektion“. Die Selektionsbedingung ist dabei üblicherweise ein Vergleich von Attributen A θ B, wobei θ ein passender Vergleichsoperator ist. Man bezeichnet den allgemeinen Verbund daher auch als θ-Verbund („Theta-Verbund“). Spezialfälle des allgemeinen Verbundes sind der Equi-Join, der Natural-Join und der Semi-Join.
Für zwei Relationen R(A1,...,An,B1,...,Bn) und S(B1,...,Bn,C1,...,Cn) ist das Ergebnis des allgemeinen Verbundes mit einer Formel Ausdruck als Selektionsbedingung
Die Ableitung ist:
[Bearbeiten] Beispiel: Non-Equi-Join
R:
| A |
B |
C |
D |
| 1 |
2 |
3 |
4 |
| 4 |
5 |
6 |
7 |
| 7 |
8 |
9 |
0 |
|
|
R x S:
| A |
B |
C |
D |
E |
F |
G |
| 1 |
2 |
3 |
4 |
1 |
2 |
3 |
| 4 |
5 |
6 |
7 |
1 |
2 |
3 |
| 7 |
8 |
9 |
0 |
1 |
2 |
3 |
| 1 |
2 |
3 |
4 |
7 |
8 |
9 |
| 4 |
5 |
6 |
7 |
7 |
8 |
9 |
| 7 |
8 |
9 |
0 |
7 |
8 |
9 |
|
JOIN(R, R.A <> S.E, S):
| A |
B |
C |
D |
E |
F |
G |
| 1 |
2 |
3 |
4 |
7 |
8 |
9 |
| 4 |
5 |
6 |
7 |
1 |
2 |
3 |
| 4 |
5 |
6 |
7 |
7 |
8 |
9 |
| 7 |
8 |
9 |
0 |
1 |
2 |
3 |
|
SELECT * FROM R, S WHERE R.A <> S.E;