single
Herausforderung: Join von 2 Tabellen
Swipe um das Menü anzuzeigen
Du hast die Aufmerksamkeit eines Unternehmens auf dich gezogen, das einen kleinen Online-Shop betreibt. Es gibt 2 Tabellen, die miteinander verknüpft sind. Die erste Tabelle enthält Informationen über die im Online-Shop verkauften Produkte.
So sieht die product-Tabelle aus:
Die zweite Tabelle enthält Produktkategorien der Website sowie eine kurze Beschreibung für jede Kategorie.
So sieht die category-Tabelle aus:
Die erste Aufgabe besteht darin, diese beiden Tabellen zu verbinden, um herauszufinden, wie viele Produkte in jeder Kategorie vorhanden sind. Dazu wird eine JOIN-Anweisung verwendet.
Bevor wir mit der Aufgabe beginnen, betrachten wir, was eine JOIN-Anweisung ist und wie sie funktioniert.
JOIN in SQL ist eine Operation, die Zeilen aus zwei oder mehr Tabellen basierend auf einer gemeinsamen Spalte miteinander kombiniert. JOIN ermöglicht es, Daten aus mehreren Tabellen in einer Abfrage zu erhalten, was die Analyse und Verarbeitung von zusammenhängenden Daten vereinfacht.
Um zwei Tabellen zu verbinden, müssen sie eine gemeinsame Spalte haben. Bei Tabellen ist diese gemeinsame Verbindung product.category_id und category.id.
Beim Schreiben von Spalten aus diesen Tabellen beginnt man mit dem Tabellennamen, fügt einen Punkt hinzu und dann den Spaltennamen. Dies sorgt für Klarheit im Code, besonders wenn Tabellen gleichnamige Spalten enthalten. So weiß SQL genau, auf welche Tabelle und Spalte sich der Befehl bezieht.
So funktioniert JOIN in der Praxis. Angenommen, wir möchten den Durchschnittspreis der Produkte für jeden Kategorienamen abrufen.
Die entsprechende Abfrage sieht folgendermaßen aus:
1234SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name
Hier ist eine Aufschlüsselung, wie JOIN in unserer Abfrage verwendet wurde:
- Im
SELECT-Teil werden die Spalten aus beiden Tabellen aufgelistet, wobei zur Klarheit der Tabellenname angegeben wird; - Im
JOIN-Teil wird die Tabelle zum Verbinden (category) und die gemeinsamen Spalten, die sie verknüpfen (product.category_id = category.id), angegeben; - Anschließend werden die Daten nach
category.namegruppiert, um den Durchschnittspreis mit der FunktionAVG()zu berechnen.
Falls dies komplex erscheint, hier eine einfache Syntax für die Verwendung von JOIN:
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Im Gegensatz zur UNION-Klausel ermöglicht die JOIN-Anweisung das Kombinieren ganzer Tabellen und nicht nur der gemeinsamen Spalten. Beachte, dass UNION nicht zwingend Unterabfragen erfordert – Unterabfragen sind nur notwendig, wenn das kombinierte Ergebnis gefiltert oder gruppiert werden soll. In vielen Fällen kann UNION direkt zwischen zwei SELECT-Anweisungen ohne Unterabfragen verwendet werden.
Wischen, um mit dem Codieren zu beginnen
Sie müssen die beiden Tabellen category und product verbinden. Die gemeinsamen Spalten dieser beiden Tabellen sind product.category_id und category.id.
Ihre Aufgabe ist es, die Gesamtmenge der Produkte in jeder Kategorie zu ermitteln. Dazu müssen Sie die Summe der Spalte product.amount berechnen.
Verwenden Sie für diese Spalte das Alias total_amount.
Am Ende Ihrer Abfrage sortieren Sie das Ergebnis nach der Spalte total_amount in aufsteigender Reihenfolge.
In der Antwort sollten 2 Spalten enthalten sein: category.name und total.amount.
Kurzanleitung
- Abrufen der Spalte
category.nameund der Summe der Spalteproduct.amountaus der Tabelleproduct. - Weisen Sie der zweiten Spalte das Alias
total_amountzu. - Verbinden Sie die Tabelle
categorymit einerJOIN-Anweisung. - Verknüpfen Sie die Tabellen über die gemeinsame Spalte
product.category_id = category.id. - Gruppieren Sie die Ergebnisse nach
category.name. - Sortieren Sie die Ergebnisse nach
total_amount.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen