Join 2 Tabellen
We hebben de aandacht van een bedrijf dat een kleine online winkel bezit. Ze hebben 2 tabellen die met elkaar verbonden zijn. De eerste tabel bevat informatie over de producten die in de online winkel worden verkocht.
Dit is hoe de product
tabel eruitziet:
De tweede tabel bevat productcategorieën op de website, samen met een korte beschrijving voor elke categorie.
Dit is hoe de category
tabel eruitziet:
Onze eerste taak is om deze twee tabellen te joinen om te achterhalen hoeveel producten er in elke categorie zijn. We zullen een JOIN
-verklaring gebruiken om dit te bereiken.
Voordat we aan de taak beginnen, laten we begrijpen wat een JOIN
-verklaring is en hoe het werkt.
Om twee tabellen te koppelen, moeten ze een gemeenschappelijke kolom delen. Laten we eens kijken hoe JOIN
werkt met behulp van de employees
en department
tabellen. Hun gemeenschappelijke kolom is employees.department
en departments.name
.
Opmerking
Bij het schrijven van kolommen uit deze tabellen, begin met de tabelnaam, voeg een punt toe en vervolgens de kolomnaam. Dit helpt om de code duidelijk te houden, vooral wanneer tabellen kolommen met dezelfde naam hebben. Het vertelt SQL precies welke tabel en kolom je bedoelt.
Hier is de taak om het totale salaris voor werknemers in elk afdelingstype (tech
/non-tech
) op te halen.
De query om deze taak te volbrengen ziet er als volgt uit:
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
Laten we uiteenzetten hoe we JOIN
in onze query hebben gebruikt:
In het
SELECT
-gedeelte vermelden we de kolommen die we van beide tabellen willen, waarbij we ervoor zorgen dat we de tabelnaam voor de duidelijkheid opnemen;In het
JOIN
-gedeelte specificeren we de tabel om te koppelen en de gemeenschappelijke kolom die ze verbindt. Hier is datemployees.department
endepartment.name
;We groeperen vervolgens de gegevens op
type
om het totale salaris te berekenen met behulp van deSUM()
-functie.
Als dit complex lijkt, hier is een eenvoudige syntaxis voor het gebruik van JOIN
:
sql
Opmerking
In tegenstelling tot de
UNION
clausule, stelt deJOIN
instructie ons in staat om volledige tabellen te combineren, niet alleen de kolommen die ze delen. Bovendien is er metJOIN
geen behoefte aan subquery's zoals bijUNION
.
Swipe to start coding
Je moet de twee tabellen samenvoegen: category
en product
. De gemeenschappelijke kolommen voor deze twee tabellen zijn product.category_id
en category.id
.
Je taak is om het totale aantal producten in elke categorie te vinden. Om dit te doen, moet je de som berekenen van de product.amount
kolom.
Gebruik de alias total_amount
voor deze kolom.
Aan het einde van je query, sorteer het resultaat op de total_amount
kolom in oplopende volgorde.
In de respons moet je 2 kolommen hebben: category.name
en total.amount
.
Korte Instructies
- Haal de
category.name
kolom en de som van deproduct.amount
kolom uit deproduct
tabel. - Ken de alias
total_amount
toe aan de tweede kolom. - Voeg de
category
tabel samen met eenJOIN
instructie. - Koppel de tabellen op de gemeenschappelijke kolom
product.category_id = category.id
. - Groepeer de resultaten op
category.name
. - Sorteer de resultaten op
total_amount
.
Oplossing
Bedankt voor je feedback!