single
Join 2 Tabeller
Sveip for å vise menyen
Du 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å nettsiden, sammen med en kort beskrivelse for hver kategori.
Slik ser category-tabellen ut:
Din første oppgave er å slå sammen disse to tabellene for å finne ut hvor mange produkter som finnes i hver kategori. Du skal bruke en JOIN-setning for å oppnå dette.
Før vi går videre til oppgaven, la oss forstå hva en JOIN-setning er og hvordan den fungerer.
JOIN i SQL er en operasjon som kombinerer rader fra to eller flere tabeller basert på en relatert kolonne mellom dem. JOIN gjør det mulig å hente data fra flere tabeller i én spørring, noe som forenkler analyse og behandling av relaterte data.
For å koble sammen to tabeller, må de dele en felles kolonne. For tabellene er denne felles koblingen product.category_id og category.id.
Når du skriver kolonner fra disse tabellene, start med tabellnavnet, legg til en punktum, og deretter kolonnenavnet. Dette bidrar til å holde koden tydelig, spesielt når tabellene har kolonner med samme navn. Det forteller SQL nøyaktig hvilken tabell og kolonne du mener.
Slik fungerer JOIN i praksis. Tenk deg at vi ønsker å hente ut gjennomsnittspris på produkter for hvert kategorinavn.
Spørringen for å oppnå dette ser slik ut:
1234SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name
Her er en oversikt over hvordan vi brukte JOIN i spørringen vår:
- I
SELECT-delen lister vi opp kolonnene vi ønsker fra begge tabellene, og inkluderer tabellnavnet for tydelighet; - I
JOIN-delen spesifiserer vi tabellen som skal kobles (category) og felles kolonner som knytter dem sammen (product.category_id = category.id); - Deretter grupperer vi dataene etter
category.namefor å beregne gjennomsnittsprisen ved hjelp avAVG()-funksjonen.
Hvis dette virker komplisert, her er en enkel syntaks for å bruke JOIN:
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
I motsetning til UNION-setningen lar JOIN-setningen deg kombinere hele tabeller, ikke bare kolonnene de har til felles. Merk at UNION ikke nødvendigvis krever underforespørsler — underforespørsler er kun nødvendig hvis du ønsker å filtrere eller gruppere det kombinerte resultatsettet. I mange tilfeller kan du bruke UNION direkte mellom to SELECT-setninger uten underforespørsler.
Sveip for å begynne å kode
Du må slå sammen de to tabellene: category og product. De felles kolonnene for disse to tabellene er product.category_id og category.id.
Oppgaven din er å finne det totale antallet produkter i hver kategori. For å gjøre dette må du beregne summen av kolonnen product.amount.
Bruk aliaset total_amount for denne kolonnen.
På slutten av spørringen skal du sortere resultatet etter kolonnen total_amount i stigende rekkefølge.
I svaret skal du ha 2 kolonner: category.name og total.amount.
Korte instruksjoner
- Hent kolonnen
category.nameog summen av kolonnenproduct.amountfra tabellenproduct. - Gi aliaset
total_amounttil den andre kolonnen. - Slå sammen tabellen
categoryved å bruke enJOIN-setning. - Koble 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!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår