Zum Inhalt springen

Relationenalgebra und SQL: Join

Aus Wikibooks


Ein Join (zu deutsch Verbund) bezeichnet die beiden hintereinander ausgeführten Operationen „Kreuzprodukt“ 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.

Definition

[Bearbeiten]

Für zwei Relationen und ist das Ergebnis des allgemeinen Verbundes mit einer Formel Ausdruck als Selektionsbedingung

Die Ableitung ist:

Beispiel: Non-Equi-Join

[Bearbeiten]
R:
A B C D
1 2 3 4
4 5 6 7
7 8 9 0
S:
E F G
1 2 3
7 8 9
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;