Index   Kapitel 1   Kapitel 2   Kapitel 3   Kapitel 4   Kapitel 5   Kapitel 6   Kapitel 7  
Beispiel - Datenbank  



3 Verbund von Tabellen

Einfacher Equijoin mit zwei Tabellen

Syntax : SELECT <Spalte1> , <Spalte2>, ...
FROM <Tabelle1> , <Tabelle2>
WHERE <Join-Bedingung>
Beispiel : Gesucht werden für jeden Mitarbeiter, der Angehörige hat, die Vornamen der Angehörigen. Hat ein Mitarbeiter mehrere Angehörige, so wird er entsprechend mehrfach in der Ergebnistabelle erwähnt.
SELECT pers_nr, angeh_vorname
FROM Mitarbeiter, Angehoeriger_von
WHERE pers_nr = mitarb_pers_nr
Hinweis : Wenn die Tabellen, die miteinander zu verbinden sind, Spalten mit gleichem Spaltennamen aufweisen, dann muß jeweils spezifiziert werden, welche Spalte welcher Tabelle gemeint ist.
Beispiel : Gesucht wird für jeden Mitarbeiter, der einer Abteilung zugeordnet ist, Vor- und Nachname und der Standort seiner Abteilung.
SELECT vor_name, nach_name, ort
FROM Mitarbeiter, Abt_ort
WHERE Mitarbeiter.abt_nr = Abt_ort.abt_nr
Hinweis : Zur Verkürzung des Anfragetextes können für die Tabellen in der FROM-Komponente auch Alias-Namen vergeben werden.
Beispiel : SELECT vor_name, nach_name, ort
FROM Mitarbeiter M, Abt_ort Ao
WHERE M.abt_nr = Ao.abt_nr
Hinweis : Die Alias-Namen können bereits in der SELECT-Komponente verwendet werden, auch wenn sie erst in der FROM-Komponente definiert werden.
Beispiel : Gesucht wird für jeden Mitarbeiter, der Angehörige hat, der Nachname des Mitarbeiters sowie Vorname und Geschlecht der Angehörigen. Hat ein Mitarbeiter mehrere Angehörige, so wird er entsprechend mehrfach in der Ergebnistabelle erwähnt.
SELECT nach_name, angeh_vorname, Ang.geschlecht
FROM Mitarbeiter, Angehoeriger_von Ang
WHERE pers_nr = mitarb_pers_nr
  

Einfacher Equijoin über n>2 Tabellen

Beispiel : Gesucht wird für jeden Mitarbeiter, der an mindestens einem Projekt arbeitet, die Personalnummer, der Nachname und der Name des Projektes bzw. die Namen der Projekte, an denen der Mitarbeiter arbeitet.
SELECT pers_nr, nach_name, P.name
FROM Mitarbeiter M, Arbeitet_an Aa, Projekt P
WHERE M.pers_nr = Aa.pers_nr         AND
Aa.pro_nr = P.pro_nr
Beispiel : Gesucht wird für jeden Mitarbeiter, der an mindestens einem Projekt arbeitet und in einer Abteilung beschäftigt ist, die Personalnummer, der Nachname und die Namen seiner Projekte sowie der Name seiner Abteilung.
SELECT pers_nr, nach_name, P.name, A.name
FROM Mitarbeiter M, Arbeitet_an Aa, Projekt P, Abteilung A
WHERE M.pers_nr = Aa.pers_nr         AND
Aa.pro_nr = P.pro_nr             AND
M.abt_nr = A.abt_nr
  

Equijoin mit Umbenennen der Spalte

Hinweis : Es ist oft sinnvoll, Spalten umzubenennen, um Mißverständnisse auszuschließen. Bei Verknüpfungen von Tabellen mit sich selber (rekursive Anfragen; siehe Abschnitt 6 ) ist eine Umbennenung meist unumgänglich.
Beispiel : Für jeden Mitarbeiter, der einen Vorgesetzten hat, wird die Personalnummer des Mitarbeiters und in der Spalte "Vorgesetzter" den Nachname seines Vorgesetzten gesucht.
SELECT M.pers_nr , V.nach_name AS Vorgesetzter
FROM Mitarbeiter M, Mitarbeiter V
WHERE M.vnr = V.mnr
  

Vereinigung und Durchschnitt mit UNION und INTERSECT

Die Datensätze von Tabellen, die identische Spalten enthalten, können durch UNION zusammengefaßt werden. Mit INTERSECT kann die Schnittmenge der Datensätze solcher Tabellen gebildet werden.

Beispiel : Gewünscht wird eine Tabelle mit den Projekten, an denen Karl Petersen mitarbeitet oder die zur Abteilung Marketing gehören.
SELECT pro_nr
FROM Mitarbeiter M, Arbeitet_an A
WHERE M.pers_nr = A.pers_nr AND
M.vorname='Karl' AND
M.nachname='Petersen' AND
UNION
SELECT PRO_NR
FROM ABTEILUNG A, Projekt P
WHERE P.abt_nr=A.abt_nr AND
A.name='Marketing'
Beispiel : Gewünscht wird eine Tabelle mit den Projekten, an denen Karl Petersen mitarbeitet und die zur Abteilung Marketing gehören.
SELECT pro_nr
FROM Mitarbeiter M, Arbeitet_an A
WHERE M.pers_nr = A.pers_nr AND
M.vorname='Karl' AND
M.nachname='Petersen' AND
INTERSECT
SELECT PRO_NR
FROM ABTEILUNG A, Projekt P
WHERE P.abt_nr=A.abt_nr AND
A.name='Marketing'

  


Index   Kapitel 1   Kapitel 2   Kapitel 3   Kapitel 4   Kapitel 5   Kapitel 6   Kapitel 7  
Beispiel - Datenbank