12th May 2022 7 Leseminuten Wie man zwei Tabellen in SQL verbindet Dorota Wdzięczna JOIN Inhaltsverzeichnis Wie man Daten aus einer einzelne Tabelle abfragt Abfrage von Daten aus mehreren Tabellen mit WHERE Abfrage von Daten aus mehreren Tabellen mit JOIN Daten aus Tabellen mit JOIN und WHERE auswählen Verknüpfung von Tabellen in SQL Die Abfrage von Daten aus mehreren Tabellen kommt bei der Arbeit mit relationalen Datenbanken häufig vor. Es ist nicht schwierig, wenn Sie wissen, wie man die entsprechenden SQL-Operatoren dafür verwendet. In diesem Artikel erfahren Sie, wie man zwei Tabellen mit Hilfe von WHERE und dem speziellen Operator JOIN verbindet und wie man Zeilen in der Ergebnismenge filtert. Wenn Sie das Verbinden von Tabellen in SQL üben möchten, schauen Sie sich unseren interaktiven SQL-JOINs Kurs an. Er bietet über 90 praktische Übungen zu verschiedenen Arten von JOINs. Weitere SQL-Übungskurse finden Sie in unserem SQL-Praxis Kurs. Wie man Daten aus einer einzelne Tabelle abfragt Zunächst eine kurze Auffrischung, wie man Daten aus einer einzelnen Tabelle auswählt. Betrachten Sie die folgende Tabelle product: idnameprice 1Smartwatch Erin234.00 2Smartwatch Sun455.00 3Smartband Eli300.00 4Smartband White124.00 Um Daten aus allen Spalten und allen Zeilen dieser Tabelle auszuwählen, können Sie die folgende Abfrage verwenden: SELECT id, name, price FROM product; In dieser einfachen Abfrage werden die Namen der Spalten, aus denen Sie Daten abrufen möchten, nach SELECT aufgeführt. Danach folgt das Schlüsselwort FROM und der Name der Tabelle, in der die Daten gespeichert sind. Sie können auch Zeilen filtern, um nur die Datensätze zurückzugeben, die den angegebenen Kriterien entsprechen. Werfen Sie einen Blick auf den folgenden SQL-Code: SELECT name, price FROM product WHERE price < 250.00; In diesem Fall besteht die Ergebnismenge nur aus zwei Zeilen mit den Spalten name und price: nameprice Smartwatch Erin234.00 Smartband White124.00 Die Spalten werden nach SELECT aufgelistet und das Schlüsselwort FROM gibt die Tabelle an, aus der Sie die Daten abrufen. Am Ende der Abfrage folgt auf das Schlüsselwort WHERE die Filterbedingung. In diesem Beispiel vergleicht die Bedingung den Wert in der Spalte price mit 250,00. Die Abfrage gibt die Details zu einem Produkt nur dann zurück, wenn der Preis dieses Produkts weniger als 250,00 beträgt. Abfrage von Daten aus mehreren Tabellen mit WHERE Relationale Datenbanken bestehen aus mehreren Tabellen, die aufeinander verweisen. Zeilen aus einer Tabelle verweisen auf bestimmte Zeilen in einer anderen Tabelle, die durch eine oder mehrere ID-Spalten verbunden sind. Wir werden uns nun ansehen, wie man Daten aus einer Tabelle mit Daten aus einer anderen Tabelle verbindet. Betrachten Sie die folgenden zwei Tabellen product und category in einer Datenbank mit Produkten in einem Lagerhaus: product idproduct_namepricecategory_id 1smartwatch235.002 2bricks26.703 3lamp128.002 4sofa3200.001 5desk1350.001 6power strip29.002 category idcategory_name 1furniture 2electronics 3toys Angenommen, Sie benötigen einige Details aus dieser Lagerdatenbank, wie z. B. den Namen der Produkte, den Preis und ihre zugehörigen Kategorien. Sie können Zeilen aus der Tabelle product mit Zeilen aus der Tabelle category verbinden, indem Sie eine WHERE-Klausel verwenden. Schauen Sie sich die folgende Abfrage an: SELECT product.product_name, product.price, category.category_name FROM product, category WHERE product.category_id = category.id ; Hier ist das Ergebnis: product_namepricecategory_name smartwatch235.00electronics bricks26.70toys lamp128.00electronics sofa3200.00furniture desk1350.00furniture power strip29.00electronics Das SELECT in dieser Abfrage listet Spalten aus beiden Tabellen auf: product_name und price aus der product Tabelle und category_name aus der category Tabelle. Jedem Spaltennamen wird der Name der entsprechenden Tabelle vorangestellt, getrennt durch einen Punkt. Als nächstes werden die Namen der Tabellen nach dem Schlüsselwort FROM aufgelistet, getrennt durch Kommas. Der letzte Teil dieser Abfrage ist ein WHERE mit einer Bedingung, die angibt, wie die Zeilen aus beiden Tabellen zusammengefügt werden sollen. Hier entsprechen die Werte der Spalte category_id aus der Tabelle product den Werten in der Spalte id aus der Tabelle category. Die Zeilen werden verbunden, wenn die Werte gleich sind (product.category_id = category.id). Die "smartwatch" in der Tabelle product hat die Kategorie-ID 2. Der gleiche Wert in der Spalte id in der Tabelle category zeigt auf "electronics", wie oben blau hervorgehoben. Wenn es in beiden Tabellen Spalten mit demselben Namen gibt, müssen sie unterschieden werden, wenn Sie sie in SELECT benennen. Sie tun dies, indem Sie die Tabelle benennen, gefolgt von einem Punkt und dem Namen der Spalte. In unserem Beispiel haben die Tabellen jedoch unterschiedliche Spaltennamen, die keine Gemeinsamkeiten aufweisen. Wir können nur die Spaltennamen in SELECT verwenden, ohne anzugeben, aus welchen Tabellen sie stammen. Wie in der folgenden Abfrage: SELECT product_name, price, category_name FROM product, category WHERE product.category_id = category.id ; Die Verwendung von WHERE ist eine Möglichkeit, Daten aus mehreren Tabellen abzufragen. Es handelt sich um einen älteren SQL-Standard, der zwar noch verfügbar ist, aber nur noch selten verwendet wird. Im nächsten Abschnitt werden wir uns eine andere Methode ansehen. Abfrage von Daten aus mehreren Tabellen mit JOIN Die heute übliche Methode zur Verknüpfung von Daten aus mehreren Tabellen ist der spezielle Operator JOIN, auch bekannt als INNER JOIN. Um zu sehen, wie dieser funktioniert, verwenden wir dieselben zwei Tabellen aus der Lagerdatenbank, die Sie einfachheitshalber hier nochmal sehen. product idnamepricecategory_id 1smart watch235.002 2bricks26.703 3lamp128.002 4sofa3200.001 5desk1350.001 6power strip29.002 category idname 1furniture 2electronics 3toys Sehen Sie sich die folgende Abfrage an, die die Kategorie aus der Tabelle category zu jedem Produktnamen in der Tabelle product zuweist. SELECT product.name AS product_name, category.name AS category_name FROM product JOIN category ON product.category_id=category.id; Die Verknüpfung erfolgt mit dem Operator JOIN. In der FROM Klausel wird der Name der ersten Tabelle (product) von einem JOIN -Schlüsselwort gefolgt, danach von dem Namen der zweiten Tabelle (category). Dann folgen das Schlüsselwort ON und die Bedingung für die Verknüpfung der Zeilen aus den beiden Tabellen. Der Name der Kategorie wird auf der Grundlage der Spalte id der Tabelle category zugewiesen, die der category_id in der Tabelle product entspricht (product.category_id=category.id). Hier ist die Ergebnismenge: product_namecategory_name smart watchelectronics brickstoys lampelectronics sofafurniture deskfurniture power stripelectronics Die "smart watch" hat den Wert category_id von 2. In der Spalte id der Tabelle category entspricht der Wert 2 mit "electronics", so dass die "smart watch" der Kategorie "electronics" zugeordnet wird. Die Verwendung des JOIN Operators ist die gängigste Methode zur Verknüpfung mehrerer Tabellen in einer Datenbank. In dem Artikel "An Illustrated Guide to the SQL INNER JOIN" (Ein illustrierter Leitfaden zum SQL INNER JOIN) erkläre ich mehr über diesen Operator. Der Artikel "SQL INNER JOIN Explained in Simple Words" geht ebenfalls näher auf dieses Thema ein. Wie bereits erwähnt ist der Operator INNER JOIN gleichwertig mit JOIN. Sie können beide austauschbar verwenden. Daten aus Tabellen mit JOIN und WHERE auswählen Die Verwendung von JOIN Operatoren zum Abrufen von Daten aus mehreren Tabellen ermöglicht auch eine einfachere Filterung der Ergebnismenge. Schauen Sie sich die folgende Abfrage an, die eine Variante der vorherigen Abfrage ist und auf denselben Daten basiert: SELECT product.name AS product_name, category.name AS category_name FROM product JOIN category ON product.category_id=category.id WHERE category.name != ’toys’; Hier ist das Ergebnis: product_namecategory_name smart watchelectronics lampelectronics sofafurniture deskfurniture power stripelectronics Der erste Teil dieser Abfrage ist derselbe wie der letzte. In dieser Abfrage werden jedoch die Produkte der Kategorie "toys" ausgeschlossen. Wir filtern die Zeilen in der Ergebnismenge, indem wir eine WHERE Klausel verwenden, um zu prüfen, ob die Kategorie eine andere als "toys" ist (category.name != ’toys’). Für weitere JOIN-Übungen in SQL lade ich Sie ein, unseren "Hands-on" SQL-JOINs Kurs zu besuchen, den Artikel "How to Practice SQL-JOINs" zu lesen oder das Video "SQL JOIN Basics" in der Serie "We Learn SQL" anzusehen . Es gibt auch andere JOIN Operatoren. Zusätzlich zu JOIN oder INNER JOIN gibt es die Operatoren LEFT JOIN, RIGHT JOIN und FULL JOIN. Lesen Sie mehr über sie in "SQL-JOINs für Anfänger". Für weitere SQL-Übungen besuchen Sie unseren SQL-Praxis Kurs. Verknüpfung von Tabellen in SQL Wir haben gesehen, wie Sie alle Details von Objekten abrufen können, indem Sie mehrere Tabellen verbinden, die sich in einer relationalen Datenbank aufeinander beziehen. Dies können Sie mit WHERE oder mit JOIN erreichen. Um mehr über die Unterschiede zwischen diesen Methoden zu erfahren, empfehle ich den sehr interessanten Artikel "Was ist der Unterschied zwischen der Verwendung mehrerer Tabellen in FROM und JOIN?". Ich habe Ihnen hier nur einen kleinen Einblick in dieses Thema gegeben. Also lernen Sie weiter! Tags: JOIN