SQL - Structured Query Language AIFB SS (1/3) Verknüpfung von Relationen (Join)(1/3) Anfragen mit Join („Natural Join“) 22. „Alle Projekte mit den Informationen der zugehörigen Angestellten.“ SELECT FROM WHERE P-NR, a.ANG-NR, NAME, WOHNORT, ABT-NR, PROZ-ARBZEIT angestellte a, ang-pro ap a.ANG-NR=ap.ANG-NR; Qualifikation mit Aliasnamen Animation und Ergebnis dieses Beispiels (siehe Seite 68) Animation vom Projekt Vikar Kartesisches Produkt Kartesisches Produkt „Natural Join“ Join mit Auswahlbedingung 23. „Alle Projekt-Nummern mit den Namen derjenigen Angestellten, die zu 50% mitarbeiten.“ SELECT FROM WHERE P-NR, NAME angestellte a, ang-pro ap a.ANG-NR=ap.ANG-NR AND PROZ-ARBZEIT=50; Animation und Ergebnis dieses Beispiels (siehe Seite 69)
SQL - Structured Query Language AIFB SS (2/3) Verknüpfung von Relationen (Join)(2/3) Anfragen mit Join (allgemein -Join) 24. „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 FROM WHERE P-NR, NAME angestellte, projekt ANG-NR <> P-LEITER; Join mit 3 Relationen 25. „Gib für jeden Angestellten seinen Namen, sowie die Projekt-Filialen der Projekte an, an denen er mitarbeitet.“ SELECT FROM WHERE angestellte a, ang-pro ap, projekt p a.ANG-NR=ap.ANG-NR AND ap.P-NR=p.P-NR; NAME, P-FILIALE Animation und Ergebnis dieses Beispiels (siehe Seite 71) Animation und Ergebnis dieses Beispiels (siehe Seite 70)
SQL - Structured Query Language AIFB SS (3/3) Verknüpfung von Relationen (Join)(3/3) Join mit derselben Relation Verwendung von Alias-Namen & Qualifikation 26. „Suche Paare von (unterschiedlichen) Angestellten(Ang-Nr,Name), die in der selben Stadt wohnen.“ (Das Ergebnis sollte keine redundanten Angaben enthalten) SELECT FROM WHERE a.NAME A-NAME, b.NAME B-BNAME angestellte a, angestellte b a.WOHNORT=b.WOHNORT AND a.NAME < b.NAME; ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe MüllerMannheim KleinMannheim32 ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe MüllerMannheim KleinMannheim32 (kartesisches Produkt) ANG-NRNAMEWOHNORTABT-NRANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe353115MeyerKarlsruhe MeyerKarlsruhe353207MüllerMannheim MeyerKarlsruhe352814KleinMannheim MüllerMannheim303115MeyerKarlsruhe MüllerMannheim303207MüllerMannheim MüllerMannheim302814KleinMannheim KleinMannheim323115MeyerKarlsruhe KleinMannheim323207MüllerMannheim KleinMannheim322814KleinMannheim32 Ergebnis: A-NAMEB-NAME KleinMüller a b
SQL - Structured Query Language AIFB SS ANG-NRNAMEWOHNORTABT-NRP-NRANG-NRPROZ-ARBZEIT 3115MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe KleinMannheim KleinMannheim KleinMannheim KleinMannheim KleinMannheim SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg Beispiel für „Natural Join“ SELECT FROM WHERE P-NR, a.ANG-NR, NAME, WOHNORT, ABT-NR,PROZ-ARBZEIT angestellte a, ang-pro ap a.ANG-NR=ap.ANG-NR; ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe KleinMannheim SchmittHeidelberg35 P-NRANG-NRPROZ-ARBZEIT kartesisches Produkt Ergebnis: P-NR ANG- NR NAMEWOHNORT ABT- NR PROZ- ARBZEIT MeyerKarlsruhe MeyerKarlsruhe KleinMannheim KleinMannheim SchmittHeidelberg35100
SQL - Structured Query Language AIFB SS Beispiel für Join mit Auswahlbedingung ANG-NRNAMEWOHNORTABT-NRP-NRANG-NRPROZ-ARBZEIT 3115MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe MeyerKarlsruhe KleinMannheim KleinMannheim KleinMannheim KleinMannheim KleinMannheim SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg SchmittHeidelberg SELECT FROM WHERE P-NR, NAME angestellte a, ang-pro ap a.ANG-NR=ap.ANG-NR AND PROZ-ARBZEIT=50; ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe KleinMannheim SchmittHeidelberg35 P-NRANG-NRPROZ-ARBZEIT (kartesisches Produkt) Ergebnis: P-NRNAME Meyer Meyer
SQL - Structured Query Language AIFB SS Beispiel für Abfragen mit Join (allgemein -Join) SELECT FROM WHERE P-NR, NAME angestellte, projekt ANG-NR <> P-LEITER; ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe KleinMannheim SchmittHeidelberg35 (kartesisches Produkt) P-NAMEP-NRP-FILIALEP-LEITER p Karlsruhe3115 p Karlsruhe3115 p Heidelberg1324 P Mannheim2814 ANG-NRNAMEWOHNORTABT-NRP-NAMEP-NRP-FILIALEP-LEITER 3115MeyerKarlsruhe35p Karlsruhe3115 MeyerKarlsruhe35p Karlsruhe3115 MeyerKarlsruhe35p Heidelberg MeyerKarlsruhe35P Mannheim2814 KleinMannheim32p Karlsruhe KleinMannheim32p Karlsruhe KleinMannheim32p Heidelberg KleinMannheim32P Mannheim SchmittHeidelberg35p Karlsruhe SchmittHeidelberg35p Karlsruhe SchmittHeidelberg35p Heidelberg1324 SchmittHeidelberg35P Mannheim2814 Ergebnis: P-NRNAME Meyer Meyer Klein Klein Klein Schmitt Schmitt Schmitt
SQL - Structured Query Language AIFB SS Beispiel für Join mit 3 Relationen SELECT FROM WHERE angestellte a, ang-pro ap, projekt p a.ANG-NR=ap.ANG-NR AND ap.P-NR=p.P-NR; P- NAME P-NR P- FILIALE P- LEITER p Karlsruhe3115 p Karlsruhe3115 P-NRANG-NRPROZ-ARBZEIT ANG-NRNAMEWOHNORT ABT- NR P-NRANG-NR PROZ- ARBZEIT P- NAME P-NR P- FILIALE P- LEITER 3115MeyerKarlsruhe p Karlsruhe3115 MeyerKarlsruhe p Karlsruhe3115 MeyerKarlsruhe p Karlsruhe3115 MeyerKarlsruhe p Karlsruhe KleinMannheim p Karlsruhe KleinMannheim p Karlsruhe KleinMannheim p Karlsruhe KleinMannheim p Karlsruhe3115 NAME, P-FILIALE ANG-NRNAMEWOHNORTABT-NR 3115MeyerKarlsruhe KleinMannheim32 ANG-NRNAMEWOHNORT ABT- NR P-NRANG-NR PROZ- ARBZEIT 3115MeyerKarlsruhe MeyerKarlsruhe KleinMannheim KleinMannheim (kartesisches Produkt) (kartesische Produkt) Ergebnis: NAMEP-FILIALE MeyerKarlsruhe KleinKarlsruhe