SQL Grundkurs 1: Die Sprache erlernen

NONEQUI-JOIN

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Auch wenn Sie es nicht glauben: Selbst wenn es scheinbar keine Übereinstimmungen in zwei Tabellen gibt, können sie verknüpft werden. Aber in der JOIN-Bedingung darf es kein Gleichheitszeichen geben. Mit einem NONEQUI-JOIN lässt sich das aber genauso realisieren. Wie? Das zeigt dieses Video.

Transkript

Eine besondere Form des "JOINs" ist der "NON EQUI-JOIN". Was es mit ihm auf sich hat, zeige ich Ihnen in diesem Video. Der Begriff "NON EQUI-JOIN", zu deutsch Ungleichheitsverknüpfung, kommt daher, dass in der JOIN-Bedingung etwas anderes als ein Gleichheitszeichen verwendet wird. Der klassiche "JOIN", der Standard-JOIN ist ja ein "EQUI-JOIN", eine Gleichheitsverknüpfung. Deshalb, weil in der JOIN-Bedingung ein Gleichheitszeichen verwendet wird. Z.B. ich joine Artikel und Artikelgruppe und definiere in der JOIN-Bedingung, dass die Gruppe der einen Tabelle gleich der Gruppe der anderen Tabelle ist. Manchmal hat man aber auch die Situation, dass man Dinge miteinander verbinden muss, wo es keine direkte Gleichheit gibt. Ich zeige Ihnen das an folgendem Beispiel. Wir möchten eruieren, wer ist in welcher Gehaltsstufe. Die Tabelle "Gehaltsstufen" enthält folgende Einträge. Wir sehen hier eine Spalte Stufen, in der A, B, C, D, E usw. definiert ist und jeweils eine Unter-und eine Obergrenze, die Spalte von und bis, z.B. von 0 bis 500 ist die Stufe A, von 500.0001 bis 1000 die Stufe B usw. Die vier Nachkommastellen habe ich hier deshalb verwendet, da es bei Währungsdatentypen international üblich ist auf vier Kommastellen genau zu gehen und deshalb ergibt sich hier diese Grenze. Umgekehrt haben wir in unserer Personaltabelle eine Spalte "Gehalt", in der Spalte "Gehalt" finden wir das Monatsgehalt des oder der Mitarbeiter. Nun möchten wir wissen, welcher Mitarbeiter ist in welcher Gehaltsstufe. Jetzt gibt es nichts was wir direkt gleichsetzen können. Wir haben weder hier beim Mitarbeiter die Ober-und Untergrenze der Gehaltsstufe oder die Gehaltsstufe selber vermerkt, noch haben wir bei der Gehaltsstufe ein Mitarbeitergehalt oder eine Personalnummer. Dennoch möchten wir diese beiden verbinden. Das einzige was wir wissen, dass dieses Gehalt hier zwischen der Ober-und Untergrenze der Stufe liegen muss und genau das wird unsere JOIN-Bedingung. Schauen wir uns das im Detail an. "FROM wave.personal", wir beginnen mit der Personaltabelle, Sie sehen der JOIN-Typ als solcher, ob es ein "INNER" oder ein "OUTER JOIN" ist, das bleibt gleich, das ist nicht betroffen. "NON EQUI-JOIN" oder "EQUI-JOIN" unterscheidet sich nur in der JOIN-Bedingung, deshalb bleibt das hier ein ganz gewöhnlicher "INNER JOIN" mit der Tabelle "Gehaltsstufen", G. Und jetzt kommt das Entscheidende, hier in dieser JOIN-Bedingung verwenden wir dieses Mal kein Gleichheitszeichen, sondern hier z.B. ein "BETWEEN". Denn wir wissen, dass das Gehalt des Mitarbeiters zwischen der Untergrenze der Gehaltsstufe, also "g.von" und der Obergrenze also "g.bis" liegen muss und weil hier kein Gleichheitszeichen, sondern eben ein "BETWEEN" verwendet wird, handelt es sich um einen "NON EQUI-JOIN". Jetzt können wir hier die SELECT-Klausel fertig ergänzen, ich kopiere mir hier gleich diese drei Spalten hinein, natürlich werde ich hier als Präfix den Tabellen-Aliasnamen jeweils voran stellen "p.p." und werde jetzt aus der anderen Tabelle "g.stufe" diese ergänzen. Eine Sortierung baue ich noch ein und sortiere das Ganze nach dem Gehalt einmal aufsteigend. Ich hoffe ich habe mich nicht vertippt und wir schauen uns das Ergebnis an. Wir sehen jetzt hier "nach Gehalt aufsteigend sortiert" Huber ist in der Stufe A, Kirschner und Schulz in der Stufe B, Morilanic und Loderer in der Stufe C, O´Brien in der Stufe D usw. bis hin zum Obermann, der hier das höchste Gehalt hat und in der Stufe J beheimatet ist. Ein "EQUI" und "NON EQUI-JOIN", wie schon erwähnt, sagt nichts darüber aus, ob es sich um einen "INNER" oder einen "OUTER JOIN" hier handelt. Wenn wir jetzt z.B. wissen möchten, ob es Mitarbeiter gibt, die keiner Gehaltsstufe zugeordnet werden können, z.B. weil sie so viel verdienen, dass sie über der höchsten Obergrenze liegen, dann könnten wir das natürlich mit einem "OUTER JOIN" realisieren. In dem Fall wäre es ein "LEFT OUTER JOIN", der uns auch jene Mitarbeiter anzeigen würde, die sich in keiner Stufe wiederfinden. Bisher hatten wir 21 Zeilen, wenn ich diesen "LEFT OUTER JOIN" nun ausführe, dann ändert sich hier am Ergebnis nichts, D.h. alle Mitarbeiter finden sich in irgendeiner Gehaltsstufe wieder. Wollen wir jetzt aber wissen, gibt es noch Gehaltsstufen in die kein Mitarbeiter hinein fällt, dann müssten wir das Ganze mit einem "RIGHT OUTER JOIN" hier in Angriff nehmen. Ich ändere es daher und führe diese Anweisung jetzt neu aus und jetzt sehen wir hier im Ergebnis, dass es sehr wohl hier vier Stufen, nämlich I,K,L und M noch gibt, die keine Mitarbeiter enthalten. Das heißt, das sind noch, wenn wir jetzt zusätzlich noch die Ober- und die Untergrenze anzeigen "g.von" und "g.bis", dann würden wir auch sehen, um welche Sphären es sich hier handelt, d.h. in diesen Monatsgehaltssphären gibt es momentan hier keinen Mitarbeiter. Verwenden sie also einen "NON EQUI-JOIN" immer dann, wenn sie Dinge verbinden möchten oder müssen, bei denen es keine direkte Entsprechung gibt. Ein "NON EQUI-JOIN" ist dadurch charakterisiert, dass in der JOIN-Bedingung kein Gleichheitszeichen sondern ein anderer Operator zum Einsatz kommt.

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!