Join in SQL - SQL 9 Informatik - simpleclub https://www.youtube.com/watch?v=lL_ElI2ENeE Transkript (automatisch erstellt) 0:00 Ja is denn schon wieder Zeit für en neues Video? Wir schauens uns heute mal an was en Join in SQL is. 0:06 Nene, kein Joint. Ein Join! 0:08 Wichtiger Unterschied. Join heißt ja erstmal soviel wie verbinden oder vereinigen. 0:12 Ein Join ist in SQL grob gesagt dazu da zwei oder mehrere Tabellen über ihre Spalten miteinander ,für die Ausgabe, zu verknüpfen. 0:20 Aber ohne viel zu labern schauen wir uns des gleich an! Ein paar werden jetzt wahrscheinlich sagen: 0:30 “Häh? Wieso braucht man da überhaupt en Join um Tabellen zusammen ausgeben zu lassen? 0:33 Gute Frage. Schauen wir uns des glei mal am Beispiel vom Film und Regisseur an! 0:36 Wir ham jetzt wieder unsere beiden Tabellen Film und Regisseur. Wenn wir jetzt beide Tabellen miteinander ausgeben wollen, hätten wir folgende Anweisung. 0:44 Damit würden jetzt also alle Zeilen und Spalten beider Tabellen ausgegeben werden. Die Ergebnistabelle sähe dann so aus. 0:51 Es wird quasi jede Zeile der einen Tabelle mit jeder Zeile der anderen Zeile verknüpft. Das ist jetzt auch schon ein Join. 0:57 Tja, des is jetzt aber mal gar nich sinnvoll. Sinnvoll wäre ja eigentlich nur die Filme mit dem jeweiligen Regisseur verknüpfen,der 1:04 dafür verantwortlich is. Und genau dafür gibt jetzt auch noch weitere Joinarten. 1:08 Mit denen können wir dann schauen ob bestimmte Spalten den gleichen Wert enthalten. Bei uns also zum Beispiel ob in Regisseur und in Regisseur Id die gleichen Werte drinstehen. 1:17 Wie das jetzt funktioniert und was es für verschiedene Join Arten gibt, schauen wir uns jetzt an. 1:22 Bevor wir starten, schauen wir uns ganz schnell was wichtiges an. Beim Verknüpfen kann es jetzt passieren, dass wir Spalten aus verschiedenen Tabellen 1:29 haben, die den gleichen Namen haben. Dann müssen wir vor den jeweiligen Spalten noch mit einem Punkt getrennt den Tabellennamen 1:35 angeben, weil SQL sonst nicht mehr durchblickt. Und ihr selbst wahrscheinlich auch net. 1:40 Also, des im Hinterkopf behalten! Aber jetzt zu den Joins! 1:43 Zu allererst der Cross Join. Der fällt jetzt en bisl aus der Reihe, da er gar nicht auf die Gleichheit von Spaltenwerten 1:50 schaut. Mit dem Cross Join kriegen wir genau sowas hin, wie wir vorhin erzeugt haben. 1:54 Nämlich dass jede Zeile von Tabelle A mit jeder Zeile von Tabelle B zusammengeführt wird. 2:00 Mathematiker kennen des natürlich als kartesisches Produkt. Die Gesamtzeilen der Ausgabe kriegen wir dann, indem wir die Anzahl der Zeilen von der einen 2:07 Tabelle mit der Anzahl der Zeilen der anderen Tabelle multiplizieren. Für nen Cross Join schreiben wir in SQL unsere normale Abfrage. 2:14 Hinter From geben wir jetzt Tabelle1 an. Dahinter kommt dann ein cross join und der Name von Tabelle2. 2:20 Wenn wir hinter from jetzt also unsere Tabellen schreiben, ist das einfach ein Cross Join nur ohne die Join Anweisung. 2:27 Der Cross Join is also net wirklich so sinnvoll. Da schauen wir lieber gleich weiter! 2:31 Der bekannteste Join ist wahrscheinlich der Inner Join. Beim Inner Join werden jetzt nur die Zeilen ausgegeben, bei denen die Werte von bestimmten 2:38 Spalten aus den Tabellen übereinstimmen. Wenn die zu überprüfenden Spalten jetzt aber einen Wert nicht gemeinsam haben, wird 2:45 die Zeile einfach verworfen. In SQL können wir den Inner Join auf zwei Arten formulieren. 2:49 Am Besten nimmt man einfach die Inner Join Anweisung. Dabei können wir anstatt inner join auch einfach join schreiben, da das in SQL automatisch 2:57 als inner join funtioniert. In die Select Zeile schreiben wir erstmal auf was wir wollen. 3:02 In From schreiben wir erstmal die Tabelle1. Dahinter kommt jetzt ein Join und der Name der anderen Tabelle. 3:09 Danach kommt jetzt noch ein on. Da geben wir jetzt an, für welche Spalten die Werte überprüft werden sollen. 3:14 Somit wird jetzt für alle Zeilen überprüft, ob diese beiden Spalten den gleichen Wert enthalten. 3:19 In neueren SQL Datenbanken kann man anstatt dem on ein using schreiben, aber nur wenn die Spalten den gleichen Namen haben. 3:26 Schauen wir uns des mal mit Film und Regisseur an. Hier macht es jetzt natürlich Sinn, den Fremdschlüssel Regisseur mit dem Primärschlüssel RegisseurId 3:34 aus Tabelle Regisseur miteinander zu vergleichen. Als erstes schreiben wir also unsere Tabelle Film hinter From, gejoint mit der Tabelle 3:41 Regisseur. Hinter on kommt jetzt unser Fremdschlüssel Regisseur aus Tabelle Film gleich unserem 3:46 Primärschlüssel RegisseurId aus Tabelle Regisseur. Somit werden jetzt nur die Zeilen ausgegeben bei denen der Wert gleich ist. 3:54 Unsere Tabelle ohne Join sah ja so aus. Durch den InnerJoin wurde jetzt diese Tabelle ausgegeben. 4:00 Wesentlicher sinnvoller oder? Wer des Join jetzt noch nicht so mag, kann Inner Join auch ohne die Anweisung formulieren. 4:07 Dafür schreib man in From dann einfach beide Tabellen rein. In Where schreibt man jetzt einfach wieder,, welche Spalten miteinander verglichen werden 4:14 sollen. Somit kriegt man dann die gleiche Ausgabe. 4:17 Die anderen Joins kann man natürlich auch ohne die jeweiligen Join Anweisungen erreichen, aber da das teilweise zu kompliziert ist, ham wir des jetzt nur beim Inner Join gemacht! 4:26 So dann gehts zum Natural Join. Bei dem muss man keine Spalten angeben, die verglichen werden sollen. 4:32 Natural Join vergleicht dabei automatisch Spalten die den gleichen Namen haben. Außerdem wird die zweite Spalte dann gelöscht, da sie ja den gleichen Namen trägt und in 4:41 der Ergebnistabelle die gleichen Werte wie die Spalte aus der 1. Tabelle hat. In SQL schreibt man dabei einfach ein natural join zwischen die Tabellen die verglichen 4:49 werden sollen. Ein Natural Join kann also gleichzeitig alle Spalten miteinander vergleichen die den gleichen 4:54 Namen haben. Wenn jetzt nur zwei Spalten den gleichen Namen haben, liefert er das gleiche Ergebnis wie 5:00 ein Inner Join, aber die zwei Spalten werden noch zusammengefasst. Wenn keine Spalten der Tabellen den gleichen Namen haben, liefert Natural Join das gleiche 5:08 Ergebnis wie ein Cross Join. Gehen wir mal wieder von der Tabelle Film und Regisseur aus. 5:14 Unseren Fremdschlüssel Regisseur benennen wir dabei in RegisseurId um. Dann wenden wir den natural join auf die beiden Tabellen an. 5:21 Somit kriegen wir jetzt als Ausgabe ne ähnliche Tabelle wie beim inner join. Allerdings wird jetzt die Spalte RegisseurId aus Tabelle Regisseur gestrichen, da sie den 5:29 gleichen Namen hat wie die Spalte RegisseurId aus der Tabelle Film. Wie wir bei Inner join gesehen haben, stehen da ja auch die gleichen Werte drin. 5:36 So, das waren jetzt die wichtigsten Join Arten,weitere folgen dann im nächsten Video. Viele viele Infos, also fassen wir das mal alles zusammen. 5:44 Ein Cross Join verbindet jede Zeile der einen Tabelle mit jeder Zeile einer anderen Tabelle. Die Gesamtzeilen der Ausgabe kriegen wir, indem wir die Anzahl der Zeilen von der einen 5:54 Tabelle mit der Anzahl der Zeilen der anderen Tabelle multiplizieren. In SQL kann man hierfür eine cross Join Klausel verwenden oder die Tabellen hinter from schreiben. 6:02 Mit einem Inner Join werden nur die Zeilen zurückgegeben, bei denen die Werte der angegebenen Spalten übereinstimmen. 6:08 In SQL schreiben wir dafür ein join oder inner join und dahinter ein on mit Angabe der Spalten. 6:15 Falls die Spalten den gleichen Namen haben, können wir ein using verwenden. Ein Natural Join werden automatisch die Werte für Spalten verglichen, die den gleichen 6:23 Namen haben. Bei gleichen Spalten wird dabei die Spalte aus der zweiten Tabelle gelöscht. 6:28 In SQL schreiben wir dafür ein natural join. Falls genau zwei Spalten den gleichen Namen haben, funktioniert Natural Join wie ein Inner 6:35 Join, aber mit löschen einer Spalte. Falls es keine gleichnamigen Spalten gibt, wird er zum Cross Join. 6:42 So Leude! Dat wars jetzt schon wieder für heute. 6:46 Klickt doch gleich ins nächste Video. Ich bin auf jeden Fall da!