Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Join 2 Tabeller | Sammenkædning af Tabeller
Intermediær SQL

Udfordring: Join 2 Tabeller

Du har fanget opmærksomheden hos en virksomhed, der ejer en lille onlinebutik. De har 2 tabeller, som er relateret til hinanden. Den første tabel indeholder information om de produkter, der sælges i onlinebutikken.

Sådan ser product-tabellen ud:

Den anden tabel indeholder produktkategorier på hjemmesiden samt en kort beskrivelse af hver kategori.

Sådan ser category-tabellen ud:

Den første opgave er at forene disse to tabeller for at finde ud af, hvor mange produkter der er i hver kategori. En JOIN-sætning anvendes til dette formål.

Før opgaven påbegyndes, gives en forklaring på, hvad en JOIN-sætning er, og hvordan den fungerer.

Note
Definition

JOIN i SQL er en operation, der kombinerer rækker fra to eller flere tabeller baseret på en relateret kolonne mellem dem. JOIN muliggør indhentning af data fra flere tabeller i én forespørgsel, hvilket forenkler analyse og behandling af relaterede data.

For at sammenkæde to tabeller skal de dele en fælles kolonne. For tabeller er denne fælles forbindelse product.category_id og category.id.

Note
Bemærk

Når du skriver kolonner fra disse tabeller, start med tabelnavnet, tilføj et punktum, og derefter kolonnenavnet. Dette hjælper med at holde koden overskuelig, især når tabeller har kolonner med samme navn. Det fortæller SQL præcis, hvilken tabel og kolonne du mener.

Her er et eksempel på, hvordan JOIN fungerer i praksis. Forestil dig, at vi vil hente den gennemsnitlige pris på produkter for hvert kategori navn.

Forespørgslen til dette ser sådan ud:

1234
SELECT 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 gennemgang af, hvordan vi brugte JOIN i vores forespørgsel:

  1. I SELECT-delen angives de kolonner, der ønskes fra begge tabeller, og tabelnavnet inkluderes for tydelighed;
  2. I JOIN-delen angives den tabel, der skal sammenkædes (category) og de fælles kolonner, der forbinder dem (product.category_id = category.id);
  3. Derefter grupperes dataene efter category.name for at beregne gennemsnitsprisen ved hjælp af funktionen AVG().

Hvis dette virker komplekst, er her en simpel syntaks for brug af JOIN:

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Note
Bemærk

I modsætning til UNION-klausulen giver JOIN-sætningen dig mulighed for at kombinere hele tabeller, ikke kun de kolonner de har til fælles. Bemærk, at UNION ikke nødvendigvis kræver underforespørgsler — underforespørgsler er kun nødvendige, hvis du ønsker at filtrere eller gruppere det kombinerede resultat. I mange tilfælde kan du bruge UNION direkte mellem to SELECT-sætninger uden underforespørgsler.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1
single

single

Udfordring: Join 2 Tabeller

Stryg for at vise menuen

Du har fanget opmærksomheden hos en virksomhed, der ejer en lille onlinebutik. De har 2 tabeller, som er relateret til hinanden. Den første tabel indeholder information om de produkter, der sælges i onlinebutikken.

Sådan ser product-tabellen ud:

Den anden tabel indeholder produktkategorier på hjemmesiden samt en kort beskrivelse af hver kategori.

Sådan ser category-tabellen ud:

Den første opgave er at forene disse to tabeller for at finde ud af, hvor mange produkter der er i hver kategori. En JOIN-sætning anvendes til dette formål.

Før opgaven påbegyndes, gives en forklaring på, hvad en JOIN-sætning er, og hvordan den fungerer.

Note
Definition

JOIN i SQL er en operation, der kombinerer rækker fra to eller flere tabeller baseret på en relateret kolonne mellem dem. JOIN muliggør indhentning af data fra flere tabeller i én forespørgsel, hvilket forenkler analyse og behandling af relaterede data.

For at sammenkæde to tabeller skal de dele en fælles kolonne. For tabeller er denne fælles forbindelse product.category_id og category.id.

Note
Bemærk

Når du skriver kolonner fra disse tabeller, start med tabelnavnet, tilføj et punktum, og derefter kolonnenavnet. Dette hjælper med at holde koden overskuelig, især når tabeller har kolonner med samme navn. Det fortæller SQL præcis, hvilken tabel og kolonne du mener.

Her er et eksempel på, hvordan JOIN fungerer i praksis. Forestil dig, at vi vil hente den gennemsnitlige pris på produkter for hvert kategori navn.

Forespørgslen til dette ser sådan ud:

1234
SELECT 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 gennemgang af, hvordan vi brugte JOIN i vores forespørgsel:

  1. I SELECT-delen angives de kolonner, der ønskes fra begge tabeller, og tabelnavnet inkluderes for tydelighed;
  2. I JOIN-delen angives den tabel, der skal sammenkædes (category) og de fælles kolonner, der forbinder dem (product.category_id = category.id);
  3. Derefter grupperes dataene efter category.name for at beregne gennemsnitsprisen ved hjælp af funktionen AVG().

Hvis dette virker komplekst, er her en simpel syntaks for brug af JOIN:

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Note
Bemærk

I modsætning til UNION-klausulen giver JOIN-sætningen dig mulighed for at kombinere hele tabeller, ikke kun de kolonner de har til fælles. Bemærk, at UNION ikke nødvendigvis kræver underforespørgsler — underforespørgsler er kun nødvendige, hvis du ønsker at filtrere eller gruppere det kombinerede resultat. I mange tilfælde kan du bruge UNION direkte mellem to SELECT-sætninger uden underforespørgsler.

Opgave

Swipe to start coding

Du skal sammenkæde de to tabeller: category og product. De fælles kolonner for disse to tabeller er product.category_id og category.id.

Din opgave er at finde det samlede antal produkter i hver kategori. For at gøre dette skal du beregne summen af kolonnen product.amount.

Brug aliaset total_amount for denne kolonne. Til sidst i din forespørgsel skal du sortere resultatet efter kolonnen total_amount i stigende rækkefølge.

I svaret skal du have 2 kolonner: category.name og total.amount.

Korte instruktioner

  • Hent kolonnen category.name og summen af kolonnen product.amount fra tabellen product.
  • Tildel aliaset total_amount til den anden kolonne.
  • Sammenkæd tabellen category ved hjælp af en JOIN-sætning.
  • Match tabellerne på den fælles kolonne product.category_id = category.id.
  • Gruppér resultaterne efter category.name.
  • Sortér resultaterne efter total_amount.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt