JOIN 2 Tabeller
Vi har fått oppmerksomheten til et selskap som eier en liten nettbutikk. De har 2 tabeller som er relatert til hverandre. Den første tabellen inneholder informasjon om produktene som selges i nettbutikken.
Slik ser product
-tabellen ut:
Den andre tabellen inneholder produktkategorier på nettstedet, sammen med en kort beskrivelse for hver kategori.
Slik ser category
-tabellen ut:
Vår første oppgave er å slå sammen disse to tabellene for å finne ut hvor mange produkter som er i hver kategori. Vi vil bruke en JOIN
-setning for å oppnå dette.
Før vi dykker inn i oppgaven, la oss forstå hva en JOIN
-setning er og hvordan den fungerer.
For å slå sammen to tabeller, må de dele en felles kolonne. La oss se hvordan JOIN
fungerer ved å bruke employees
og department
tabellene. Deres felles kolonne er employees.department
og departments.name
.
Merk
Når du skriver kolonner fra disse tabellene, start med tabellnavnet, legg til en prikk, og deretter kolonnenavnet. Dette hjelper med å holde koden klar, spesielt når tabeller har kolonner med samme navn. Det forteller SQL nøyaktig hvilken tabell og kolonne du mener.
Her er oppgaven med å hente ut total lønn for ansatte i hver avdelingstype (tech
/non-tech
).
Spørringen for å utføre denne oppgaven vil se slik ut:
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
La oss bryte ned hvordan vi brukte JOIN
i vår spørring:
I
SELECT
-delen lister vi opp kolonnene vi ønsker fra begge tabellene, og sørger for å inkludere tabellnavnet for klarhet;I
JOIN
-delen spesifiserer vi tabellen som skal kobles og den felles kolonnen som knytter dem sammen. Her er detemployees.department
ogdepartment.name
;Vi grupperer deretter dataene etter
type
for å beregne total lønn ved å brukeSUM()
-funksjonen.
Hvis dette virker komplekst, her er en enkel syntaks for å bruke JOIN
:
sql
Merk
I motsetning til
UNION
-klausulen, larJOIN
-setningen oss kombinere hele tabeller, ikke bare kolonnene de deler. I tillegg, medJOIN
, er det ikke behov for underforespørsler som medUNION
.
Swipe to start coding
Du må slå sammen de to tabellene: category
og product
. De felles kolonnene for disse to tabellene er product.category_id
og category.id
.
Din oppgave er å finne det totale antallet produkter i hver kategori. For å gjøre dette, må du beregne summen av product.amount
-kolonnen.
Bruk aliaset total_amount
for denne kolonnen.
På slutten av spørringen din, sorter resultatet etter total_amount
-kolonnen i stigende rekkefølge.
I svaret ditt, bør du ha 2 kolonner: category.name
og total.amount
.
Korte Instruksjoner
- Hent
category.name
-kolonnen og summen avproduct.amount
-kolonnen fraproduct
-tabellen. - Tildel aliaset
total_amount
til den andre kolonnen. - Slå sammen
category
-tabellen ved å bruke enJOIN
-setning. - Matche tabellene på den felles kolonnen
product.category_id = category.id
. - Grupper resultatene etter
category.name
. - Sorter resultatene etter
total_amount
.
Løsning
Takk for tilbakemeldingene dine!