Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 1: Die Sprache erlernen

JOIN über die WHERE-Klausel

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die ältere JOIN-Syntax über die WHERE-Klausel sollten Sie zwar aufgrund mehrerer Nachteile nicht mehr verwenden, aber Sie sollten sie zumindest kennen und interpretieren können. Denn in der Praxis kann Sie oftmals in SQL-Skripten enthalten sein, die Sie von Vorgängern übernommen haben.

Transkript

In diesem Video möchte ich Ihnen den Join über die WHERE-Klausel zeigen. Für dieses Beispiel möchte ich die beiden Tabellen "Artikel" und "Artikelgruppen" verwenden. In der Tabelle "Artikel" finden wir unsere Artikelinformationen und hier die Fremdschlüsselspalte "Gruppe", die auf den Primärschlüssel der zweiten Tabelle, der Tabelle "Artikelgruppen" verweist. Solange wir nur auf die Artikeltabelle zugegriffen haben, konnten wir nur das Kürzel der Artikelgruppe anzeigen. Den Langtext finden wir in der zweiten Tabelle, in der Tabelle "Artikelgruppen" Hier finden wir für jedes Kürzel den dazu passenden Langtext. Zwischen diesen beiden Tabellen besteht auch eine Beziehung, die genau von dieser Fremdschlüsselspalte "Gruppe" zur Primärschlüsselspalte "Art_Gr" der Tabelle "Artikelgruppen" reicht. Um nun in einer Abfrage den Langtext der Artikelgruppe zu den Artikelfunktionen dazu zu joinen, müssen wir beide Tabellen verwenden. Zuerst zeige ich Ihnen den Join über die WHERE-Klausel. Diese Variante ist allerdings veraltet. Der Hauptgrund, warum ich es Ihnen dennoch näherbringen möchte ist, dass ich in der Praxis immer wieder erlebe, dass diese Join-Variante in SQL-Scripts, die von Vorgängern an Nachfolger in Firmen übergeben werden, weit verbreitet sind, und deshalb ist es aus meiner Sicht wichtig, dass man diese zumindest interpretieren und verstehen kann. Wenn Sie so ein Script übernehmen, könnten Sie es auch gleich auf einen anderen Join überarbeiten. Aber dennoch möchte ich Ihnen den Join über die WHERE-Klausel zeigen. Ich beginne mit dem Zugriff auf die Artikeltabelle. Bei dem Join über die WHERE-Klausel werden mehrere Tabellen einfach mit Komma getrennt in der FROM-Klausel angegeben. D.h., die zweite Tabelle wäre in dem Fall die Tabelle "wawi.Artikelgruppen". Damit habe ich jetzt einmal definiert, wen ich miteinander joinen möchte. Ein Join benötigt aber auch noch immer die Information, wie der Join realisiert werden soll, die sogenannte Join-Bedingung. Und diese wird, daher auch der Name "Join über die WHERE-Klausel", in der WHERE-Klausel eingetragen. Nämlich, dass der Inhalt der Spalte "Gruppe" derselbe ist wie der Inhalt der Spalte "Art_Gr" der zweiten Tabelle. Wir können aufgrund der Beziehung hier erkennen, dass zwischen diesen zwei Spalten die Beziehung aufgebaut ist. Deshalb können wir diese immer als Join-Bedingung einsetzen. In der SELECT-Klausel können wir nun Spalten anführen, so wie wir das möchten. Ich nehme die Artikelnummer, die Artikelbezeichnung, diese Spalte hier, die Spalte "Gr_Text", also den Langtext aus der anderen Tabelle, "Gr_Text", vergebe noch den Alias-Namen "Gruppe", denn "Gr_Text" ist in der Ausgabe nicht besonders schön, und noch den Verkaufspreis, den wieder aus der Artikeltabelle. In der WHERE-Klausel haben wir also definiert, wie wir den Join realisieren möchten. Aber natürlich hat die WHERE-Klausel ihre eigenen Aufgaben, sprich Filtern. Diese einschränkenden Filterbedingungen werden bei dieser Join-Variante einfach mit "UND" ergänzt. Ich verwende jetzt z.B. die Einschränkung, dass ich sage "UND der Verkaufspreis soll niedriger sein als 100 €". Sortieren möchte ich das Ganze auch noch, z.B. nach der Artikelbezeichnung. Damit wäre diese erste Anweisung fertig. Ich führe sie nun aus und wir sehen, dass wir ein Ergebnis erhalten, dass aus zwei Tabellen bestückt ist. Artikelnummer, Bezeichnung und Verkaufspreis stammen aus der "Artikel"-Tabelle, der Inhalt der Spalte Gr_Text, mit dem Alias-Namen "Gruppe" versehen, stammt aus der Tabelle "Artikelgruppen". Ich habe vorhin erwähnt, dass diese Art des Joins veraltet ist. Der Grund, warum eine neue Syntax entwickelt worden ist, ist der, dass diese Variante sehr fehleranfällig ist. Wenn wir nämlich auf eine Join-Bedingung vergessen oder eine ungültige Join-Bedingung verwenden, haben wir sehr leicht ein sogenanntes Kreuzprodukt oder kartesisches Produkt. Ich habe jetzt hier diese beiden Tabellen gejoint und habe die Join-Bedingung einfach weggelassen. Betrachten wir uns jetzt das Ergebnis, dann sehen wir, dass wir sehr viele Zeilen, in dem Fall über 10.000 Zeilen, bekommen haben. Woran liegt das? Kreuzprodukt bedeutet: Aufgrund dessen, dass wir dem System nicht mitgeteilt haben, wie die Datensätze der beiden Tabellen zusammenzufügen sind, hat das System alle möglichen Kombinationen gebildet. Im konkreten Fall bedeutet das: jeden Artikel einmal mit jeder Artikelgruppe. D.h. wir finden hier jeden Artikel, egal welcher Gruppe er angehört, einmal mit dem Text "Besteck" und dann muss ich jetzt einiges hinunter scrollen, bis wir alle ca. 1100 Artikel durch haben, dann sehen Sie, kommt jetzt alles mit der nächsten Artikelgruppe, mit "elektrischen Geräten" noch einmal, usw. Das sind natürlich keine realen Daten. Jetzt werden Sie natürlich sagen: "Naja, da passe ich halt auf, das passiert mir nicht." Das Problem ist die Komplexität und die räumliche Trennung. Wenn Sie nicht zwei Tabellen sondern zehn Tabellen miteinander joinen, benötigen Sie 9 dieser Join-Bedingungen. Die sind dann räumlich getrennt, die stehen wahrscheinlich einige Zeilen weiter unter. Sie haben hier stehen die erste Tabelle, zwei Zeilen später die dazu gejointe Tabelle, fünf Zeilen weiter unten die Join-Bedingung. Und hier reicht ein Fehler aus, dass Sie ein ungültiges Ergebnis bekommen, aber eben keine Fehlermeldung. Das ist das Gefährliche. Ein weiterer Grund war, dass natürlich die Übersichtlichkeit verloren geht, weil die WHERE-Klausel mit sehr vielen Informationen vollgestopft wird mit den Join-Bedingungen und Filterbedingungen. Deshalb empfehle ich Ihnen, diese Syntax-Variante neu nicht mehr zu verwenden, aber aus meiner Sicht ist es dennoch wichtig, diese Syntax zu verstehen und zu kennen, da es natürlich sein kann, dass man in der Praxis damit konfrontiert wird. Diese Variante basiert darauf, dass mehrere Tabellen mit Komma getrennt in der FROM-Klausel angegeben werden, und in der WHERE-Klausel dann definiert wird, wie diese Tabellen jeweils miteinander zu joinen sind.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!