Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Yhdistä 2 Taulua | Taulujen Yhdistäminen
SQL Jatkotaso

Haaste: Yhdistä 2 Taulua

Olet saanut huomion yritykseltä, joka omistaa pienen verkkokaupan. Heillä on 2 taulua, jotka liittyvät toisiinsa. Ensimmäinen taulu sisältää tietoja verkkokaupassa myytävistä tuotteista.

Tältä product-taulu näyttää:

Toinen taulu sisältää verkkosivun tuotekategoriat sekä lyhyen kuvauksen jokaisesta kategoriasta.

Tältä category-taulu näyttää:

Ensimmäinen tehtäväsi on liittää nämä kaksi taulua selvittääksesi, kuinka monta tuotetta on kussakin kategoriassa. Käytät tähän JOIN-lausetta.

Ennen tehtävään siirtymistä tutustutaan siihen, mitä JOIN-lause tarkoittaa ja miten se toimii.

Note
Määritelmä

JOIN SQL:ssä on operaatio, joka yhdistää rivejä kahdesta tai useammasta taulusta niiden välisten yhteisten sarakkeiden perusteella. JOIN mahdollistaa tietojen hakemisen useista tauluista yhdellä kyselyllä, mikä yksinkertaistaa liittyvien tietojen analysointia ja käsittelyä.

Kahden taulun yhdistämiseksi niiden täytyy jakaa yhteinen sarake. Näissä tauluissa tämä yhteys on product.category_id ja category.id.

Note
Huomio

Kun kirjoitat sarakkeita näistä tauluista, aloita taulun nimellä, lisää piste ja sitten sarakkeen nimi. Tämä selkeyttää koodia, erityisesti silloin kun tauluissa on samannimisiä sarakkeita. Se kertoo SQL:lle tarkalleen, mitä taulua ja saraketta tarkoitat.

Näin JOIN toimii käytännössä. Kuvitellaan, että haluamme hakea tuotteiden keskihinnan jokaiselle kategorian nimelle.

Tätä varten kysely näyttää tältä:

1234
SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name

Tässä on erittely siitä, miten käytimme JOIN-lausetta kyselyssämme:

  1. SELECT-osassa luetellaan sarakkeet, jotka halutaan molemmista tauluista, ja varmistetaan taulun nimen käyttö selkeyden vuoksi;
  2. JOIN-osassa määritellään liitettävä taulu (category) ja yhteiset sarakkeet, jotka yhdistävät ne (product.category_id = category.id);
  3. Tämän jälkeen ryhmitellään tiedot category.name mukaan, jotta voidaan laskea keskihinta AVG()-funktiolla.

Jos tämä vaikuttaa monimutkaiselta, tässä on yksinkertainen syntaksi JOIN-käyttöön:

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Note
Huomio

Toisin kuin UNION-lause, JOIN-lauseella voidaan yhdistää kokonaisia tauluja, ei pelkästään niiden yhteisiä sarakkeita. Huomaa, että UNION ei vaadi alikyselyjä itsessään — alikyselyjä tarvitaan vain, jos haluat suodattaa tai ryhmitellä yhdistetyn tulosjoukon. Useimmissa tapauksissa voit käyttää UNION-lausetta suoraan kahden SELECT-lauseen välillä ilman alikyselyjä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1
single

single

Haaste: Yhdistä 2 Taulua

Pyyhkäise näyttääksesi valikon

Olet saanut huomion yritykseltä, joka omistaa pienen verkkokaupan. Heillä on 2 taulua, jotka liittyvät toisiinsa. Ensimmäinen taulu sisältää tietoja verkkokaupassa myytävistä tuotteista.

Tältä product-taulu näyttää:

Toinen taulu sisältää verkkosivun tuotekategoriat sekä lyhyen kuvauksen jokaisesta kategoriasta.

Tältä category-taulu näyttää:

Ensimmäinen tehtäväsi on liittää nämä kaksi taulua selvittääksesi, kuinka monta tuotetta on kussakin kategoriassa. Käytät tähän JOIN-lausetta.

Ennen tehtävään siirtymistä tutustutaan siihen, mitä JOIN-lause tarkoittaa ja miten se toimii.

Note
Määritelmä

JOIN SQL:ssä on operaatio, joka yhdistää rivejä kahdesta tai useammasta taulusta niiden välisten yhteisten sarakkeiden perusteella. JOIN mahdollistaa tietojen hakemisen useista tauluista yhdellä kyselyllä, mikä yksinkertaistaa liittyvien tietojen analysointia ja käsittelyä.

Kahden taulun yhdistämiseksi niiden täytyy jakaa yhteinen sarake. Näissä tauluissa tämä yhteys on product.category_id ja category.id.

Note
Huomio

Kun kirjoitat sarakkeita näistä tauluista, aloita taulun nimellä, lisää piste ja sitten sarakkeen nimi. Tämä selkeyttää koodia, erityisesti silloin kun tauluissa on samannimisiä sarakkeita. Se kertoo SQL:lle tarkalleen, mitä taulua ja saraketta tarkoitat.

Näin JOIN toimii käytännössä. Kuvitellaan, että haluamme hakea tuotteiden keskihinnan jokaiselle kategorian nimelle.

Tätä varten kysely näyttää tältä:

1234
SELECT category.name, AVG(product.price) AS average_price FROM product JOIN category ON product.category_id = category.id GROUP BY category.name

Tässä on erittely siitä, miten käytimme JOIN-lausetta kyselyssämme:

  1. SELECT-osassa luetellaan sarakkeet, jotka halutaan molemmista tauluista, ja varmistetaan taulun nimen käyttö selkeyden vuoksi;
  2. JOIN-osassa määritellään liitettävä taulu (category) ja yhteiset sarakkeet, jotka yhdistävät ne (product.category_id = category.id);
  3. Tämän jälkeen ryhmitellään tiedot category.name mukaan, jotta voidaan laskea keskihinta AVG()-funktiolla.

Jos tämä vaikuttaa monimutkaiselta, tässä on yksinkertainen syntaksi JOIN-käyttöön:

SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
Note
Huomio

Toisin kuin UNION-lause, JOIN-lauseella voidaan yhdistää kokonaisia tauluja, ei pelkästään niiden yhteisiä sarakkeita. Huomaa, että UNION ei vaadi alikyselyjä itsessään — alikyselyjä tarvitaan vain, jos haluat suodattaa tai ryhmitellä yhdistetyn tulosjoukon. Useimmissa tapauksissa voit käyttää UNION-lausetta suoraan kahden SELECT-lauseen välillä ilman alikyselyjä.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Sinun tulee yhdistää kaksi taulua: category ja product. Näiden taulujen yhteiset sarakkeet ovat product.category_id ja category.id.

Tehtävänäsi on selvittää tuotteiden kokonaismäärä jokaisessa kategoriassa. Tätä varten sinun tulee laskea yhteen product.amount -sarakkeen arvot.

Käytä tälle sarakkeelle aliasta total_amount. Lajittele kyselyn lopputulos total_amount-sarakkeen mukaan nousevaan järjestykseen.

Vastauksessa tulee olla kaksi saraketta: category.name ja total.amount.

Lyhyet ohjeet

  • Hae category.name -sarake ja product.amount -sarakkeen summa product-taulusta.
  • Anna toiselle sarakkeelle alias total_amount.
  • Yhdistä category-taulu käyttämällä JOIN-lausetta.
  • Yhdistä taulut yhteisen sarakkeen perusteella: product.category_id = category.id.
  • Ryhmittele tulokset category.name -sarakkeen mukaan.
  • Lajittele tulokset total_amount-sarakkeen mukaan.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt