23rd Jun 2022 8 Leseminuten Wie man Tabellen in SQL ohne JOINs verbindet Tihomir Babic JOIN Inhaltsverzeichnis Die erste Methode: FROM und WHERE Syntax Beispiel Abfrage Ergebnis Die zweite Methode: UNION/UNION ALL Syntax Beispiel Abfrage: UNION Ergebnis: UNION Abfrage: UNION ALL Ergebnis: UNION ALL Ja, Tabellen können ohne das Schlüsselwort JOIN verbunden werden Lernen Sie alle möglichen Arten der Tabellenverknüpfung in SQL Hier erfahren Sie, wie Sie Tabellen ohne das JOIN Schlüsselwort. Es scheint unmöglich zu sein: Tabellen in SQL zu verbinden, ohne das Schlüsselwort JOIN zu verwenden. Aber die Verwendung des Schlüsselworts JOIN ist nicht die einzige Möglichkeit, Tabellen in SQL zu verbinden. In diesem Artikel werden zwei weitere Methoden zum Verbinden von Tabellen vorgestellt. Keine der beiden Methoden erfordert das Schlüsselwort JOIN, um zu funktionieren. Sie sind: Die Verwendung eines Kommas zwischen den Tabellennamen in der FROM Klausel und die Angabe der Verknüpfungsbedingung in einer WHERE Verwendung von UNION/UNION ALL. Ich gehe davon aus, dass Sie wissen, wie JOINs funktionieren. Falls Sie es brauchen, hier eine Auffrischung, wie man Tabellen mit JOINs verbindet . Die erste Methode: FROM und WHERE Syntax Die Syntax für diese Methode der Tabellenverknüpfung ohne Verwendung von JOINs lautet: SELECT * FROM , WHERE Sie können das Schlüsselwort JOIN durch ein Komma in der Klausel FROM ersetzen. Was tun Sie als nächstes? Es gibt kein ON -Schlüsselwort, mit dem Sie die Verknüpfungsbedingung angeben können, wie es bei der Verwendung von JOIN der Fall wäre, z. B. auf welche zwei Spalten Sie die Tabellen verknüpfen wollen. Bei dieser Methode verwenden Sie einfach eine WHERE -Klausel, um dies zu tun. Diese Methode macht genau das Gleiche wie: SELECT * FROM <table1> JOIN <table2> ON <condition> Schauen wir uns an, wie es in der Praxis funktioniert. Beispiel In diesem Beispiel muss ich für jeden Künstler den Namen des Künstlers, die Alben, die er/sie aufgenommen hat, und die Jahre, in denen sie aufgenommen wurden, finden. Um Ihnen zu zeigen, wie diese Methode funktioniert, werde ich zwei Tabellen verwenden. Die erste ist artist: idartist_name 1Paul Simon 2Marvin Gaye 3Bettye LaVette 4Joni Mitchell 5Sly and the Family Stone Es handelt sich um eine einfache Tabelle, die einige meiner Lieblingsmusiker enthält. Die andere Tabelle, albumsieht wie folgt aus: idalbum_nameyear_recordedartist_id 1Dance to the Music19685 2Small Talk19745 3Stranger to Stranger20161 4I've Got My Own Hell to Raise20053 5Blues19714 6Court and Spark19744 7A Tribute to the Great Nat "King" Cole19652 8Graceland19861 9Still Crazy After All These Years19751 10In the Blue Light20181 11There's a Riot Goin' On19715 12The Scene of the Crime20073 13Mingus19794 14What's Going On19712 15Here, My Dear19782 Dies sind die Alben, die von den Musikern aus der ersten Tabelle aufgenommen wurden. Abfrage Die Abfrage für die Verknüpfung dieser Tabellen ohne das Schlüsselwort JOIN sieht wie folgt aus: SELECT artist_name, album_name, year_recorded FROM artist, album WHERE artist.id = album.artist_id; Zunächst gebe ich die Spalten an, die ich in meinem Ergebnis sehen möchte: artist_name, album_name, und year_recorded. Sie stammen entweder aus artist oder album. Ich verbinde diese beiden Tabellen einfach, indem ich sie in der FROM Klausel aufliste und mit einem Komma trenne. Die WHERE Klausel wird im Allgemeinen verwendet, um Ergebnisse zu filtern. Ich kann sie verwenden, um dieses Ergebnis so zu filtern, dass es alle Daten anzeigt, bei denen die Spalte id aus der Tabelle artist gleich der Spalte artist_id aus der Tabelle album. Wie Sie sehen, ist die Bedingung in WHERE in dieser Abfrage dieselbe wie nach dem Schlüsselwort ON, wenn Sie JOIN: artist.id = album.artist_id verwenden. Die entsprechende Abfrage mit dem Schlüsselwort JOIN lautet: SELECT artist_name, album_name, year_recorded FROM artist JOIN album ON artist.id = album.artist_id; Ergebnis Beide Abfragen liefern das gleiche Ergebnis: artist_namealbum_nameyear_recorded Paul SimonIn the Blue Light2018 Paul SimonStill Crazy After All These Years1975 Paul SimonGraceland1986 Paul SimonStranger to Stranger2016 Marvin GayeHere, My Dear1978 Marvin GayeWhat's Going On1971 Marvin GayeA Tribute to the Great Nat "King" Cole1965 Bettye LaVetteThe Scene of the Crime2007 Bettye LaVetteI've Got My Own Hell to Raise2005 Joni MitchellMingus1979 Joni MitchellCourt and Spark1974 Joni MitchellBlues1971 Sly and the Family StoneThere's a Riot Goin' On1971 Sly and the Family StoneSmall Talk1974 Sly and the Family StoneDance to the Music1968 Sie sehen, dass das Ergebnis die Daten aus den beiden Ausgangstabellen kombiniert. Ich kann jetzt zum Beispiel sehen, dass Paul Simon das Album "In the Blue Light" im Jahr 2018 aufgenommen hat. Wenn Sie meiner Abfrage nicht trauen, können Sie jederzeit bei Wikipedia nachsehen! Bei dieser Methode wird eine gemeinsame Spalte zum Verbinden von Tabellen verwendet. Denken Sie daran, dass Sie auch Tabellen verbinden können , die keine gemeinsame Spalte haben. Die zweite Methode: UNION/UNION ALL Syntax SELECT , , … FROM UNION / UNION ALL SELECT , , … FROM Sowohl UNION als auch UNION ALL werden verwendet, um das Ergebnis der ersten Abfrage mit dem Ergebnis der zweiten Abfrage zu verbinden. Sie schreiben einfach zwei SELECT Anweisungen und dazwischen UNION oder UNION ALL. Aber was ist der Unterschied zwischen diesen beiden SQL-Schlüsselwörtern? Erinnern Sie sich: UNION entfernt doppelte Zeilen aus der Abfrage und zeigt sie nur einmal an. UNION ALL zeigt alle Zeilen aus beiden Tabellen an, unabhängig davon, wie viele Duplikate es gibt. Damit sowohl UNION als auch UNION ALL funktionieren, müssen alle Spalten in den beiden Anweisungen SELECT übereinstimmen. Das bedeutet, dass die Anzahl der ausgewählten Spalten gleich sein muss und dass die Datentypen dieser Spalten gleich sein müssen. Diese beiden Operatoren werden Set-Operatoren genannt. Lesen Sie diesen Artikel, um mehr über diese und andere Set-Operatoren zu erfahren. Beispiel Auch in diesem Beispiel haben wir zwei Tabellen. Die erste heißt customer: idfirst_namelast_name 1JimmyHellas 2FrancoisJambony 3RenataTraviata 4CarmenNaburana 5SteveInicks 6ElviraSamson 7AlpaCino 8RosaSparks 9BernardineSane 10BertRandrussell Sie enthält eine Liste meiner Kunden. Die zweite Tabelle lautet supplier: idfirst_namelast_name 1ArpadPolanski 2BillyVan Persie 3SteveInicks 4Jean-ClaudeZaandam 5EminaArkayeva 6BoMilosz 7JanWrangler 8HeinrichStroopwafel 9HerringoStarr 10JosephineMatijevic 11AlpaCino 12FlintWestwood 13DesPaulmond 14WilmaJackson 15KatrinVerson 16BertRandrussell 17CarmenNaburana 18JimmyTulp 19LuisWolf 20MirandaFanucci Wenn Sie diese Tabellen etwas genauer betrachten, sehen Sie, dass einige Personen in beiden Tabellen enthalten sind. Schauen Sie sich zum Beispiel Steve Inicks an - das bedeutet, dass Steve, zusammen mit einigen anderen, sowohl mein Kunde (er kauft einige Dienstleistungen von meinem Unternehmen) als auch mein Lieferant (er liefert einige Dienstleistungen an mich) ist. Schauen wir uns nun an, wie es aussieht, wenn ich diese Tabellen mit UNION oder UNION ALL verknüpfe. Abfrage: UNION Diese Methode, Tabellen zu kombinieren, ohne das Schlüsselwort JOIN zu verwenden, führt zu der folgenden Abfrage: SELECT first_name, last_name FROM customer UNION SELECT first_name, last_name FROM supplier; Die erste Anweisung SELECT wählt die Spalten first_name und last_name aus der Tabelle customer. Die zweite Anweisung SELECT macht dasselbe, aber aus der Tabelle supplier. Ich verwende UNION, um die Ergebnisse dieser beiden Abfragen zu verbinden. Es funktioniert: Es gibt zwei Spalten in beiden SELECT Anweisungen, und sie haben denselben Datentyp. Sie sind sogar gleich benannt, obwohl das für das Funktionieren der Abfrage nicht notwendig ist. Ergebnis: UNION Wenn Sie die Abfrage ausführen, erhalten Sie dies: first_namelast_name AlpaArpad CinoBilly JosephineMatijevic LuisWolf Jean-ClaudeZaandam SteveInicks BillyVan Persie EminaArkayeva MirandaFanucci BoMilosz JimmyHellas FrancoisJambony RosaSparks KatrinVerson JanWrangler BernardineSane HeinrichStroopwafel ElviraSamson RenataTraviata JimmyTulp WilmaJackson ArpadPolanski BertRandrussell DesPaulmond FlintWestwood CarmenNaburana HerringoStarr Wie ich bereits erwähnt habe, handelt es sich um eine Kombination aller Daten aus beiden Tabellen. Lassen Sie uns nach Duplikaten suchen. Ich habe erwähnt, dass Steve Inicks sowohl in customer und supplier Tabellen. Im Abfrageergebnis finden Sie ihn nur einmal. Ich habe die Zeile markiert, in der er sich befindet. Schauen wir uns an, wie sich dies von UNION ALL unterscheidet. Abfrage: UNION ALL Die Abfrage lautet in diesem Fall: SELECT first_name, last_name FROM customer UNION ALL SELECT first_name, last_name FROM supplier; Wie Sie sehen können, ist der Unterschied nicht sehr groß. Es ist sogar die gleiche Abfrage, nur dass sie UNION ALL statt UNION enthält. Die Ergebnisse sind jedoch unterschiedlich. Schauen wir es uns an. Ergebnis: UNION ALL Das Ergebnis der Abfrage ist: first_namelast_name JimmyHellas FrancoisJambony RenataTraviata CarmenNaburana SteveInicks ElviraSamson AlpaCino RosaSparks BernardineSane BertRandrussell ArpadPolanski BillyVan Persie SteveInicks Jean-ClaudeZaandam EminaArkayeva BoMilosz JanWrangler HeinrichStroopwafel HerringoStarr JosephineMatijevic AlpaCino FlintWestwood DesPaulmond WilmaJackson KatrinVerson BertRandrussell CarmenNaburana JimmyTulp LuisWolf MirandaFanucci Da Steve Inicks sowohl als Kunde als auch als Lieferant auftritt, wollen wir prüfen, wie oft er im Ergebnis auftaucht. Er taucht zweimal auf, beide Male in blau markiert. Ich habe auch drei weitere Personen markiert, die zweimal vorkommen: Alpa Cino, Bert Randrussell und Carmen Naburana. Hier ist ein weiteres Beispiel für die Verwendung von UNION und UNION ALL. Ja, Tabellen können ohne das Schlüsselwort JOIN verbunden werden Wie Sie gerade gesehen haben, ist es nicht immer notwendig, das Schlüsselwort JOIN zu verwenden, um zwei Tabellen in SQL zu verbinden. Sie können es durch ein Komma in der FROM Klausel ersetzen und dann Ihre Verknüpfungsbedingung in der WHERE Klausel angeben. Die andere Methode ist, zwei SELECT Anweisungen zu schreiben. Das Ergebnis jeder Anweisung ist eine Tabelle, also verwenden Sie einfach UNION oder UNION ALL, um die beiden zu kombinieren. Beachten Sie, dass dies nur funktioniert, wenn Ihre SELECT Anweisungen die gleiche Anzahl von Spalten und die gleichen Datentypen haben. Verwenden Sie UNION, wenn Sie keine Duplikate anzeigen möchten, und UNION ALL, wenn Sie Duplikate anzeigen möchten. Lernen Sie alle möglichen Arten der Tabellenverknüpfung in SQL Je mehr Möglichkeiten Sie kennen, wie Sie Tabellen in SQL verbinden können, desto besser. Mit diesen beiden Methoden und dem JOIN wird das Verbinden von Tabellen einfacher. Ihre Abfrageergebnisse sind näher an dem, was Sie brauchen, und Sie können mehr aus SQL herausholen. Wenn Sie verschiedene Möglichkeiten der Tabellenverknüpfung kennen, können Sie auch Ihren Code ein wenig auflockern. Es kann langweilig sein, alles immer auf die gleiche Weise zu schreiben. Aber am wichtigsten ist, dass jede der drei Methoden in verschiedenen Situationen nützlich ist. In unserem KursSQL für Anfänger können Sie all diese Methoden zum Verbinden von Tabellen lernen. Dies ist nur ein erster Schritt zur Beherrschung von SQL von A bis Z. Sie brauchen auch viel Übung, um das Verbinden von Tabellen zu beherrschen. Vielleicht ist es am besten, wenn Sie mindestens eine der zehn Online-Optionen aus unserer Liste auswählen. Tags: JOIN