Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SQL - Structured Query Language AIFB SS 2001 1 (1/9) 2.3.7 Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]

Ähnliche Präsentationen


Präsentation zum Thema: "SQL - Structured Query Language AIFB SS 2001 1 (1/9) 2.3.7 Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]"—  Präsentation transkript:

1 SQL - Structured Query Language AIFB SS 2001 1 (1/9) 2.3.7 Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL] {LEFT | RIGHT | FULL} [OUTER] JOIN | [NATURAL] [INNER] JOIN | UNION JOIN SQL-92 bietet Operatoren zur direkten Darstellung von Joins an. Es können sowohl mit SELECT hergeleitete Tabellen in der Form: (SELECT … FROM … WHERE …) join-op (SELECT … FROM … WHERE …) [join-spec]; als auch Basis-Tabellen in der Form: SELECT … FROM table join-op table [join-spec] WHERE … miteinander verbunden werden.

2 SQL - Structured Query Language AIFB SS 2001 2 (2/9) 2.3.7 Join-Operationen in SQL-92(2/9) table1 CROSS JOIN table2 berechnet das Kartesische Produkt und entspricht SELECT * FROM table1, table2 Natural Join: Die Verwendung des Schlüsselworts NATURAL führt zur Berechnung des Natural Join. Wenn nicht alle Attribute mit gleichem Namen in die Join-Bedingung eingehen sollen, kann dies mit join-spec := USING (column-list) auf die angegebenen Attribute eingeschränkt werden. Kartesisches Produkt:

3 SQL - Structured Query Language AIFB SS 2001 3 (3/9) 2.3.7 Join-Operationen in SQL-92(3/9) Ein Theta-Join wird mit INNER JOIN (oder nur JOIN) durchgeführt, wobei die Join-Bedingung mit join-spec := ON predicate angegeben wird (predicate entspricht der Klausel, die nach WHERE in einer SELECT-Anfrage angegeben werden kann) Outer-Join: Sämtliche Variationen des Outer-Join (FULL, LEFT, RIGHT) können formuliert werden. Dabei kann entweder ein – Natural-Join (NATURAL, opt. USING-Klausel) oder ein – Theta-Join (ON-Klausel) durchgeführt werden. Das Schlüsselwort OUTER ist optional, sollte aber aus Gründen der Leserlichkeit benutzt werden. Theta-Join:

4 SQL - Structured Query Language AIFB SS 2001 4 (4/9) 2.3.7 Join-Operationen in SQL-92(4/9) Der Union-Join kann mit Hilfe des Schlüsselworts UNION JOIN durchgeführt werden. Bemerkung: Die Join-Operationen in SQL-92 können zwar auch mit früheren SQL- Versionen formuliert werden, allerdings z.T. nur sehr umständlich. Die neuen Schlüsselworte dienen der verbesserten Lesbarkeit; insbesondere die WHERE-Klausel wird dadurch von Join-Bedingungen entlastet. Union-Join:

5 SQL - Structured Query Language AIFB SS 2001 5 (5/9) 2.3.7 Join-Operationen in SQL-92(5/9) 27. (Beispiel 22, S.41, Natural Join) Alle Projekt mit den Informationen der zugehörigen Angestellten. SELECT P-NR, a.ANG-NR, NAME, WOHNORT, ABT-NR, PROZ-ARBZEIT FROM angestellte a, ang-pro ap WHERE a.ANG-NR=ap.ANG-NR; In SQL-92: SELECT P-NR, NAME FROM angestellte NATURAL JOIN ang-pro; Beispiel 2-3 (Umformulierung der Bsp. 22-26)

6 SQL - Structured Query Language AIFB SS 2001 6 (6/9) 2.3.7 Join-Operationen in SQL-92(6/9) 28. (Beispiel 23, S.41, Join mit Auswahlbedingung)Alle Projekt-Nummern mit den Namen derjenigen Angestellten, die zu 50% mitarbeiten. SELECT P-NR, NAME FROM angestellte a, ang-pro ap WHERE a.ANG-NR=ap.ANG-NR AND PROZ-ARBZEIT=50; In SQL-92: SELECT P-NR, NAME FROM angestellte NATURAL JOIN ang-pro WHERE PROZ-ARBZEIT = 50; oder SELECT P-NR, NAME FROM angestellte INNER JOIN ang-pro ON (angestellte.ANG-NR=ang-pro.ANG-NR AND PROZ-ARBZEIT=50); Beispiel 2-3 (Umformulierung der Bsp. 22-26)

7 SQL - Structured Query Language AIFB SS 2001 7 (7/9) 2.3.7 Join-Operationen in SQL-92(7/9) 29. (Beispiel 24, S.42, allgemein -Join)Gib für jedes Projekt die Projektnummer und die Namen aller Angestellten an, die dort nicht Projektleiter sind. (Angestellter muß nicht an Projekt mitarbeiten) SELECT P-NR, NAME FROM angestellte, projekt WHERE ANG-NR <> P-LEITER; In SQL-92: SELECT P-NR, NAME FROM angestellte JOIN projekt ON (ANG-NR <> P-LEITER); Beispiel 2-3 (Umformulierung der Bsp. 22-26)

8 SQL - Structured Query Language AIFB SS 2001 8 (8/9) 2.3.7 Join-Operationen in SQL-92(8/9) 30. (Beispiel 25, S.42, Join mit 3 Relationen)Gib für jeden Angestellten seinen Namen, sowie die Projekt-Filialen der Projekte an, an denen er mitarbeitet. SELECT NAME, P-FILIALE FROM angestellte a, ang-pro ap, projekt p WHERE a.ANG-NR=ap.ANG-NR AND ap.P-NR=p.P-NR; In SQL-92: SELECT NAME, P-FILIALE FROM angestellte NATURAL JOIN ang-pro NATURAL JOIN projekt; Beispiel 2-3 (Umformulierung der Bsp. 22-26)

9 SQL - Structured Query Language AIFB SS 2001 9 (9/9) 2.3.7 Join-Operationen in SQL-92(9/9) 31. (Beispiel 26, S.43, Join mit derselben Relation)Suche Paare von (unterschiedlichen) Angestellten, die in der selben Stadt wohnen. (Das Ergebnis sollte keine redundanten Angaben enthalten) SELECT a.NAME A-NAME, b.NAME B-BNAME FROM angestellte a,angestellte b WHERE a.WOHNORT=b.WOHNORT AND a.NAME<b.NAME; In SQL-92 SELECT a.NAME, b.NAME FROM (angestellte a) NATURAL JOIN (angestellte b) USING (WOHNORT) WHERE a.NAME < b.NAME; Beispiel 2-3 (Umformulierung der Bsp. 22-26)


Herunterladen ppt "SQL - Structured Query Language AIFB SS 2001 1 (1/9) 2.3.7 Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]"

Ähnliche Präsentationen


Google-Anzeigen