single
Utfordring: 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:
Den første oppgaven er å slå sammen disse to tabellene for å finne ut hvor mange produkter det er 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 delte 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 gjør koden tydeligere, 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-klausulen 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.
Til slutt i 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