Tämä artikkeli kuuluu Access SQL:ää käsittelevään artikkelisarjaan. Tässä artikkelissa annetaan ohjeet FROM-lauseen kirjoittamiseen sekä esimerkkejä eri tekniikoista FROM-lauseiden käyttämiseen.
SELECT-lausekkeessa tietolähteet määritetään FROM-lauseen avulla. FROM-lause voi sisältää myös JOIN-toiminnon. JOIN-toimintoa käytetään kahden tietolähteen tietojen täsmäämiseen ja yhdistämiseen esimerkiksi kahdessa taulukossa tai taulukossa ja kyselyssä.
Jos haluat lukea yleiskatsauksen Access SQL:stä, lue ohjeartikkeli Access SQL: peruskäsitteet, sanasto ja syntaksi.
Artikkelin sisältö
Tietolähteiden määrittäminen
SELECT-lausekkeessa FROM-lause määrittää taulukot tai kyselyt, jotka sisältävät SELECT-lausekkeessa käytettävät tiedot.
Oletetaan, että haluat tietää tietyn asiakkaan puhelinnumeron. Olettaen, että tiedot sisältävän kentän taulukon nimi on taulAsiakas, FROM-lause näyttää jokseenkin seuraavanlaiselta:
FROM tblCustomer
Voit sulkea nimen hakasulkeisiin. Jos nimi ei sisällä välilyöntejä tai erikoismerkkejä (esimerkiksi välimerkkejä), hakasulkeet eivät ole pakollisia. Jos nimi sisältää välilyöntejä tai erikoismerkkejä, hakasulkeita on pakko käyttää.
Vihje: Välilyöntejä sisältävä nimi on helpompi lukea ja se voi säästää aikaa lomakkeita ja raportteja suunniteltaessa, mutta se voi saada sinut kirjoittamaan enemmän, kun kirjoitat SQL-lausekkeita. Ota tämä huomioon, kun nimeät Objekteja Access-tietokannassa.
Vaihtoehtoisten nimien käyttäminen tietolähteille
Voit viitata taulukkoon SELECT-lausekkeessa toisella nimellä käyttämällä FROM-lauseessa taulukon tunnusta. Taulukon tunnus on nimi, jonka määrität tietolähteelle kyselyssä, kun käytät ilmausta tietolähteenä, tai jotta SQL-lause on helpompi luoda ja lukea. Tästä voi olla hyötyä, jos tietolähteen nimi on pitkä tai hankala kirjoittaa etenkin silloin, kun lausekkeessa on useita samannimisiä kenttiä eri taulukoista.
Jos esimerkiksi haluat valita tietoja kahdesta kentästä, joiden kummankin nimi on Tunnus, joista toinen tulee taulukosta taulAsiakas ja toinen taulukosta taulTilaus, SELECT-lauseke voi näyttää seuraavanlaiselta:
SELECT [tblCustomer].[ID], [tblOrder].[ID]
Kun FROM-lauseessa käytetään taulukkojen tunnuksia, kysely on helpompi kirjoittaa. FROM-lause voi näyttää seuraavanlaiselta taulukoiden tunnusten kanssa:
FROM [tblCustomer] AS [C], [tblOrder] AS [O]
Tämän jälkeen SELECT-lauseessa voi käyttää näitä taulukoiden tunnuksia seuraavasti:
SELECT [C].[ID], [O].[ID]
Huomautus: Kun käytät taulukon tunnusta, voit viitata taulukkoon SQL-lausekkeessa käyttämällä tunnusta tai taulukon koko nimeä.
Yhteen liittyvien tietojen liittäminen
Kun tarvitset keinon yhdistää tietuepareja kahdesta tietolähteestä yhdeksi tietueeksi kyselyn tuloksessa, voit suorittaa liitoksen. Liitos on SQL-toiminto, joka määrittää, miten kaksi tietolähdettä liittyvät toisiinsa ja pitääkö toisen tietolähteen tiedot sisällyttää, jos toisessa lähteessä ei ole vastaavia tietoja.
Jos haluat yhdistää kahden tietolähteen tiedot, liitostoiminto suoritetaan kentässä, joka löytyy kummastakin tietolähteestä. Kun tähän kenttään tallennetut arvot vastaavat toisiaan, tietueiden tiedot yhdistetään tuloksissa.
Tietojen yhdistämisen lisäksi liitosta voi käyttää myös sen määrittämiseen, sisällytetäänkö jommankumman taulukon tiedot, jos toisessa taulukossa ei ole vastaavaa tietuetta.
Oletetaan esimerkiksi, että haluat käyttää kyselyssä kahden taulukon tietoja: tblCustomer ja tblOrder. Molemmissa taulukoissa on Asiakastunnus-kenttä, joka tunnistaa asiakkaan. Kullakin tblCustomer-taulukon tietueella voi olla yksi tai useampi vastaava tietue tblOrder-taulukossa, ja vastaavat arvot voidaan määrittää CustomerID-kentän arvojen perusteella.
Jos haluat liittää taulukot siten, että kysely yhdistää tietueet taulukoista sulkien pois kummastakin taulukosta tietueet, joita vastaavaa tietuetta toisessa taulukossa ei ole, FROM-lause voi näyttää seuraavanlaiselta (rivinvaihto on lisätty luettavuuden parantamiseksi):
FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]
Accessissa liitokset tapahtuvat SELECT-lausekkeen FROM-lauseessa. Liitostyyppejä on kaksi: sisäliitokset ja ulkoliitokset. Seuraavassa osassa kuvaillaan nämä kaksi liitostyyppiä.
Sisäliitokset
Sisäliitokset ovat yleisin liitostyyppi. Kun sisäliitoksen sisältävä kysely suoritetaan, kyselyn tuloksiin sisällytetään vain ne tietueet, joissa on yhteinen arvo kummassakin liitetyssä taulukossa.
Sisäliitoksen syntaksi on seuraava (rivinvaihto on lisätty luettavuuden parantamiseksi):
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2
Seuraavassa taulukossa kuvaillaan INNER JOIN -toiminnon eri osat.
Osa |
Kuvaus |
taulukko1, taulukko2 |
Niiden taulukkojen nimet, joista tietueet yhdistetään. |
kenttä1, kenttä2 |
Yhdistettävien kenttien nimet. Jos ne eivät ole numeerisia, kenttien täytyy olla samaa tietotyyppi ja sisältää samantyyppisiä tietoja, mutta niiden ei tarvitse olla samannimisiä. |
vertailuoperaattori |
Jokin seuraavista relaatiovertailuoperaattoreista: "=", "<", ">", "<=", ">=," tai "<>." |
Ulkoliitokset
Ulkoliitokset ovat samankaltaisia kuin sisäliitokset, koska ne ohjaavat kyselyn yhdistämään kahden lähteen tiedot. Ne ovat erilaisia, koska ne myös määrittävät, onko tiedot sisällytettävä, kun yhteistä arvoa ei ole. Ulkoliitoksilla on suunta: voit määrittää, sisällytetäänkö kaikki liitoksen ensimmäisessä määritetyssä tietolähteessä (eli vasemmanpuoleisessa liitoksessa) olevat tietueet vai sisällytetäänkö kaikki liitoksen toisessa tietolähteessä (eli oikeanpuoleisessa liitoksessa) olevat tietueet.
Ulkoliitoksen syntaksi on seuraava:
FROM taulukko1 [ LEFT | RIGHT ] JOIN taulukko2
ON taulukko1.kenttä1vertailuoper taulukko2.kenttä2Seuraavassa taulukossa kuvaillaan LEFT JOIN- ja RIGHT JOIN -toimintojen eri osat.
Osa |
Kuvaus |
taulukko1, taulukko2 |
Niiden taulukkojen nimet, joista tietueet yhdistetään. |
kenttä1, kenttä2 |
Yhdistettävien kenttien nimet. Kenttien täytyy olla samaa tietotyyppi ja sisältää samantyyppisiä tietoja, mutta niiden ei tarvitse olla samannimisiä. |
vertailuoperaattori |
Jokin seuraavista relaatiovertailuoperaattoreista: "=", "<", ">", "<=", ">=," tai "<>." |
Lisätietoja liitoksista on artikkelissa Liitostaulukot ja -kyselyt.