Kun Access-kyselyyn sisällytetään useita tietolähteitä, rajoitat haluttujen tietueiden määrää liitosten avulla sen mukaan, miten tietolähteet liittyvät toisiinsa. Liitosten avulla voit myös yhdistää molempien tietolähteiden tietueet niin, että kustakin tietueparista tulee yksi tietue kyselyn tuloksissa.
Tässä artikkelissa käsitellään erityyppisiä liitoksia ja näytetään, miten niitä käytetään kyselyssä. Liitos luodaan oletusarvoisesti automaattisesti, jos kahden kyselyssä käytettävän tietolähteen välillä on jo suhde. Liitos luodaan myös, jos on olemassa kenttiä, jotka vastaavat selvästi toisiaan. Voit poistaa automaattisesti luodun liitoksen. Tässä artikkelissa on perustietoja taulukoiden välisistä yhteyksistä ja siitä, miten yhteyksiä voidaan luoda.
Huomautus
Voit liittää kyselyjä samalla tavalla kuin liität taulukoita, ja voit myös liittää molemmat.
Tämän artikkelin sisältö
- Yleiskatsaus
- Liitostyypit
- Näytä rivit, joissa on yhteinen arvo kummassakin liitetyssä taulukossa
- Näytä kaikki yhden taulukon rivit ja vastaavat rivit toisesta taulukosta
- Näytä molempien taulukoiden kaikki rivit ja liitä ne, jos niissä on yhteinen arvo
- Ristiliitokset
- Taulukoiden liittäminen kenttien arvojen epätasa-arvon perusteella
- Liitoksen poistaminen
Yleiskatsaus
Tietokanta on kokoelma taulukoita, joiden tietoihin on looginen suhde. Yhteyksiä käytetään taulukoiden yhdistämiseen niiden yhteisten kenttien perusteella. Taulukko voi olla osa miten monta yhteyttä tahansa, mutta jokaisessa yhteydessä on aina täsmälleen kaksi taulukkoa. Kyselyssä yhteyttä edustaa liitos.
Kun lisäät kyselyyn taulukoita, Access luo liitoksia, jotka perustuvat taulukoiden välille määritettyihin yhteyksiin. Voit luoda liitoksia kyselyihin manuaalisesti, vaikka ne eivät esittäisi jo määritettyjä yhteyksiä. Jos käytät muita kyselyjä (taulukoiden sijasta tai niiden lisäksi) kyselyn tietolähteinä, voit luoda liitoksia lähdekyselyjen välille samoin kuin kyseisten kyselyjen ja tietolähteinä käytettävien taulukoiden välille.
Liitokset toimivat samalla tavalla kuin kyselyn ehdot, sillä ne luovat sääntöjä, jotka tietojen on täytettävä, jotta ne voidaan sisällyttää kyselytoimintoihin. Toisin kuin ehdot, liitokset määrittävät myös, että jokainen liitoksen ehdot täyttävä rivipari yhdistetään tietuejoukossa yhdeksi riviksi.
Liitoksia on neljää perustyyppiä: sisäliitokset, ulkoliitokset, ristiliitokset ja vertailuliitokset. Tässä artikkelissa käydään läpi käytettävissä olevat liitostyypit, niiden syitä ja liitosten luontiohjeita.
Liitokset viittaavat kyselyihin, mitä yhteydet taulukoihin tarkoittavat: ne ilmaisevat, miten kahden lähteen tietoja voidaan yhdistää niiden yhteisten tietoarvojen perusteella. Seuraavassa on kuva liitoksesta kyselyn rakennenäkymässä, ja liitoksen ominaisuudet ovat avoinna valintaikkunassa:
Tämä taulukoiden välinen viiva edustaa liitosta. Avaa Liitoksen ominaisuudet -valintaikkuna (kuvassa) kaksoisnapsauttamalla liitosta ja tarkista liitos tai muuta sitä.
Liitokset ovat joskus suunnattuja. Tältä valintaikkunan alueelta näet, mikä taulukko on liitoksessa ja mitä kenttiä käytetään taulukoiden liittämiseen.
Tämä alue määrittää liitoksen tyypin: vaihtoehto 1 on sisäliitos, 2 on vasen ulkoliitos ja 3 on oikea ulkoliitos.
Molempien taulukoiden kenttiä voidaan käyttää, ja kustakin tiettyyn tehtävään liittyvät tiedot näytetään. Sisäliitoksessa ei sisällytetä muita tietoja. Ulkoliitoksessa myös yhden taulukon liittymättömät tietueet sisällytetään kyselyn tuloksiin.
Sivun alkuun
Liitostyypit
Liitoksia on neljää perustyyppiä: sisäliitokset, ulkoliitokset, ristiliitokset ja vertailuliitokset. Ristiliitokset ja vertailuliitokset ovat edistyneitä liitostyyppejä ja niitä käytetään harvoin, mutta sinun on hyvä tuntea ne, jotta ymmärrät liitosten toiminnan.
Sisäliitokset: vain toisiinsa liittyvät tiedot molemmista taulukoista yhdistettynä
Sisäliitoksessa Access sisällyttää tiedot taulukosta vain, jos taulukossa on vastaavia tietoja ja päinvastoin. Useimmissa tapauksissa käytetään sisäliitoksia. Kun luot liitoksen etkä määritä liitoksen tyyppiä, Access olettaa, että haluat sisäliitoksen. Sisäliitokset ovat hyödyllisiä, sillä niiden avulla voit yhdistää tietoja kahdesta lähteestä jaettujen arvojen perusteella – näet tiedot vain silloin, kun niistä on kokonainen kuva.
Ulkoliitokset: kaikki liittyvät tiedot yhdistettyinä oikein sekä kaikki yhden taulukon jäljellä olevat tietueet
Ulkoliitos on kuin sisäliitos, mutta lisää loput rivit yhdestä taulukosta. Ulkoliitokset ovat suunnattuja: vasen ulkoliitos sisältää kaikki tietueet vasemmanpuoleisesta taulukosta – liitoksen ensimmäisestä taulukosta – ja oikea ulkoliitos sisältää kaikki tietueet oikeanpuoleisesta taulukosta – liitoksen toisesta taulukosta.
Täydet ulkoliitokset: kaikki tiedot, mahdollisuuksien mukaan yhdistettyinä
Joissakin järjestelmissä ulkoliitos voi sisältää molempien taulukoiden kaikki rivit ja rivit yhdistettäessä silloin, kun ne vastaavat toisiaan. Tätä kutsutaan täydelliseksi ulkoliitokseksi, eikä Access nimenomaisesti tue niitä. Voit kuitenkin luoda saman vaikutelman käyttämällä ristiliitosta ja ehtoja.
Ristiliitokset: kaikki tiedot yhdistettynä kaikin mahdollisin tavoin
Yleensä ristiliitos on sivuvaikutus, kun kyselyyn lisätään kaksi taulukkoa ja ne unohtuvat liittää. Access tulkitsee tämän tarkoittavan sitä, että haluat nähdä kaikki yhden taulukon tietueet yhdistettyinä toisen taulukon kaikkiin tietueisiin – kaikki mahdolliset tietueiden yhdistelmät. Koska tietoja ei voi yhdistää, tällaisella liitoksella voidaan harvoin tuottaa järkeviä tuloksia. Joissakin tapauksissa ristiliitos on kuitenkin juuri sitä tarvitsemasi.
Liitokset, jotka ovat vertailuja: kuten tavallinen liitos, mutta joissa käytetään eri vertailua rivien yhdistämiseen
Erisuuruiset liitokset vertaavat arvoja ja määrittävät, yhdistetäänkö tiedot ja miten, käyttämällä muuta operaattoria kuin yhtäläisyysmerkkiä (=). Erillisiä liitoksia ei tueta eksplisiittisesti, mutta voit saavuttaa saman vaikutelman käyttämällä ristiliitosta ja ehtoja.
Näytä rivit, joissa on yhteinen arvo kummassakin liitetyssä taulukossa
Jos haluat näyttää vain ne rivit, joilla on vastaavat arvot liitetyssä kentässä, käytä sisäliitosta. Access luo sisäliitokset automaattisesti.
Sisäliitokset ovat yleisin liitostyyppi. Ne kertovat kyselylle, että yhden liitetyn taulukon rivit vastaavat toisen taulukon rivejä liitettyjen kenttien tietojen perusteella. Kun sisäliitoksen sisältävä kysely suoritetaan, kyselytoimintoihin sisällytetään vain rivit, joilla on yhteinen arvo kummassakin liitetyssä taulukossa.
Ohjevalikko sisäliitosta käytetään?
Sisäliitoksen käyttäminen ei yleensä edellytä toimia. Jos kyselyyn lisättävillä taulukoilla on jo yhteyksiä, Access luo automaattisesti sisäliitoksen kunkin liittyvän taulukkoparin välille, kun lisäät taulukoita. Jos viite-eheys säilytetään, Access näyttää myös numeron 1 liitosviivan yläpuolella näyttämään, mikä taulukko on yksi-moneen-yhteyden "yksi"-puolella, ja äärettömän symboli (∞) osoittaa, mikä taulukko on monta-puolella.
Vaikka et olisi luonut yhteyksiä, Access luo sisäliitokset automaattisesti, jos lisäät kyselyyn kaksi taulukkoa ja kummassakin taulukossa on sama tai yhteensopiva kenttä ja yksi liitokentistä on perusavain. "yksi"- ja "monta"-merkkejä ei näytetä tässä tapauksessa, koska viite-eheyttä ei pakoteta.
Jos lisäät kyselyjä kyselyysi etkä ole luonut näiden kyselyjen väliin yhteyksiä, Access ei luo automaattisesti sisäliitoksia kyselyjen välille tai kyselyjen ja taulukoiden välille. Yleensä ne on luotava itse. Sisäliitos luodaan vetämällä kenttä tietolähteestä toisen tietolähteen kenttään. Access näyttää viivan molempien kenttien välillä liitoksen luomisen merkiksi.
Sisäliitoksen SQL-syntaksi
Sisäliitokset määritetään SQL:ssä FROM-lauseessa alla esitetyllä tavalla:
FROM taulukko1 INNER JOIN taulukko2 ON taulukko1. kenttä1 verraa taulukko2.kenttä2
INNER JOIN -toiminnossa on seuraavat 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 tietotyyppien on oltava samaa ja sisältää samantyyppisiä tietoja, mutta niiden ei tarvitse olla samannimisiä. |
| vertailu | Mikä tahansa relaatiovertailuoperaattori: "=", "<," ">", "<=", ">=" tai "<>." |
Lisätietoja INNER JOIN -syntaksista on aiheessa INNER JOIN -toiminto.
Sivun alkuun
Näytä kaikki yhden taulukon rivit ja vastaavat rivit toisesta taulukosta
Ulkoliitokset kertovat kyselylle, että vaikka osa liitoksen molemmilla puolilla olevista riveistä vastaa tarkalleen, kyselyn tulee sisältää kaikki yhden taulukon rivit ja myös ne toisen taulukon rivit, joilla on yhteinen arvo liitoksen molemmilla puolilla.
Ulkoliitokset voivat olla vasempia ulkoliitoksia tai oikeita ulkoliitoksia. Vasemmassa ulkoliitoksessa kysely sisällyttää kaikki SQL-lausekkeen FROM-lauseen ensimmäisen taulukon rivit ja vain ne toisen taulukon rivit, joissa liitoskenttä sisältää kummankin taulukon yhteisiä arvoja. Oikeassa ulkoliitoksessa kysely sisällyttää SQL-lausekkeen FROM-lauseeseen kaikki toisen taulukon rivit ja vain ne toisen taulukon rivit, joissa liitoskenttä sisältää kummankin taulukon yhteisiä arvoja.
Huomautus
Voit helposti tunnistaa, mikä taulukko on tietyn liitoksen vasemmanpuoleinen tai oikea taulukko, kaksoisnapsauttamalla liitosta ja siirtymällä sitten Liitoksen ominaisuudet -valintaikkunaan. Voit myös siirtyä SQL-näkymään ja tarkastella sitten FROM-lausetta.
Koska joillakin ulkoliitoksen toisella puolella olevilla riveillä ei ole vastaavia rivejä toisesta taulukosta, jotkin kyseisestä taulukosta kyselyn tuloksissa palautetut kentät ovat tyhjiä, jos rivit eivät vastaa toisiaan.
Ohjevalikko ulkoliitosta käytetään?
Voit luoda ulkoliitoksen muokkaamalla aiemmin luotua sisäliitosta. Jos sisäliitosta ei ole, luo sellainen ja muuta se sitten ulkoliitokseksi.
Sisäliitoksen muuttaminen ulkoliitokseksi
- Kaksoisnapsauta kyselyn rakennenäkymässä liitosta, jota haluat muuttaa.
Näyttöön tulee Liitoksen ominaisuudet -valintaikkuna. - Huomioi Liitoksen ominaisuudet -valintaikkunassa vaihtoehtojen 2 ja 3 vieressä olevat vaihtoehdot.
- Napsauta vaihtoehtoa, jota haluat käyttää, ja valitse sitten OK.
- Access näyttää liitoksen ja näyttää nuolen, joka osoittaa tietolähteestä, jossa kaikki rivit sisällytetään, tietolähteeseen, jossa vain liitosehdon täyttävät rivit sisällytetään.
Monitulkintaiset ulkoliitokset
Jos luot kyselyn, joka sisältää LEFT JOIN- ja INNER JOIN -liitokset, Access ei ehkä pysty määrittämään, mikä liitostoiminto suoritetaan ensin. Koska tulokset vaihtelevat sen mukaan, suoritetaanko vasen liitos vai sisäliitos ensin, Access näyttää virhesanoman:
Voit korjata tämän virheen muokkaamalla kyselyä niin, että on selvää, mikä liitos suoritetaan ensin.
Ulkoliitoksen SQL-syntaksi
Ulkoliitokset määritetään SQL:ssä FROM-lauseessa alla esitetyllä tavalla:
FROM taulukko1 [ LEFT | RIGHT ] JOIN table2
ON taulukko1.kenttä1 vertaa taulukko2.kenttä2
LEFT JOIN- ja RIGHT JOIN -toiminnoissa on seuraavat osat:
| Osa | Kuvaus |
|---|---|
| taulukko1, taulukko2 | Niiden taulukkojen nimet, joista tietueet yhdistetään. |
| kenttä1, kenttä2 | Yhdistettävien kenttien nimet. Kenttien on oltava samaa tietotyyppiä ja sisältää samantyyppisiä tietoja, mutta niiden ei tarvitse olla samannimisiä. |
| vertailu | Mikä tahansa relaatiovertailuoperaattori: "=", "<," ">", "<=", ">=" tai "<>." |
Lisätietoja ulkoliitoksen syntaksista on aiheessa LEFT JOIN- JA RIGHT JOIN -toiminnot.
Sivun alkuun
Näytä molempien taulukoiden kaikki rivit ja liitä ne, jos niissä on yhteinen arvo
Kun haluat näyttää kahden taulukon kaikki rivit ja yhdistää ne yhteisten arvojen perusteella, käytä täydellistä ulkoliitosta. Access ei tue nimenomaisesti täysiä ulkoliitoksia, mutta voit saada saman tuloksen käyttämällä yhdistämiskyselyä. Seuraavassa kerrotaan, miten se tehdään, mutta jos haluat lisätietoja yhdistämiskyselyistä, katso Katso myös -osa.
Voit suorittaa täydellisen ulkoliitoksen yhdistämällä yhdistämiskyselyllä seuraavasti:
Luo kysely, jossa on vasen ulkoliitos kentässä, jota haluat käyttää täydellisessä ulkoliitoksessa.
Valitse Aloitus-välilehden Näkymät-ryhmästä Näytä ja valitse sitten SQL-näkymä.
Kopioi SQL-koodi painamalla CTRL+C.
Poista FROM-lauseen lopussa oleva puolipiste ja paina ENTER-näppäintä.
Kirjoita UNION ja paina sitten Enteriä.
Huomautus
Älä käytä ALL-avainsanaa, kun käytät yhdistämiskyselyä täydellisen ulkoliitoksen suorittamiseen.
Liitä vaiheessa 3 kopioimasi SQL-koodi painamalla CTRL+V.
Muuta liittämässäsi koodissa LEFT JOIN -funktio RIGHT JOIN -funktioksi.
Poista toisen FROM-lausekkeen lopussa oleva puolipiste ja paina ENTER-näppäintä.
Lisää WHERE-lause, joka määrittää, että liitoskentän arvo on NULL ensimmäisessä taulukossa, joka on FROM-lausekkeessa (vasemmanpuoleisessa taulukossa).
Esimerkiksi jos FROM-lauseke on:FROM Products RIGHT JOIN [Order Details] ON Products.ID = [Order Details].[Product ID]Lisäisit seuraavan WHERE-lausekkeen:
WHERE Products.ID IS NULLKirjoita puolipiste (;) WHERE-lausekkeen loppuun, joka ilmaisee yhdistämiskyselyn lopun.
Valitse Rakenne-välilehden Tulokset-ryhmästä Suorita.
Ristiliitokset
Ristiliitokset eroavat sisä- ja ulkoliitoksista siinä, että niitä ei ole eksplisiittisesti esitettyä Accessissa. Ristiliitoksessa yhden taulukon rivit yhdistetään toisen taulukon riveihin, jolloin saadaan niin sanottu ristitulo tai karteesinen tulo. Aina kun suoritat kyselyn, jossa on taulukoita, joita ei ole nimenomaisesti liitetty, tuloksena on ristitulo. Ristiliitokset ovat yleensä tahattomia mutta joissakin tapauksissa niistä voi olla hyötyä.
Miksi ristiliitosta kannattaa käyttää?
Jos haluat tutkia kaikki mahdolliset kahden taulukon tai kyselyn väliset rivien yhdistelmät, käytä ristiliitosta. Oletetaan esimerkiksi, että yrityksesi vuosi on ollut loistava ja harkitset alennusten antamista asiakkaillesi. Voit muodostaa kyselyn, joka laskee yhteen kunkin asiakkaan ostot, luoda pienen taulukon, jossa on useita mahdollisia ostohyvitysprosentteja, ja yhdistää nämä kaksi toiseen kyselyyn, joka suorittaa ristiliitoksen. Tuloksena on kysely, joka näyttää joukon hypoteettisia hyvityksiä kullekin asiakkaalle.
Ohjevalikko ristiliitosta käytetään?
Ristiliitos luodaan aina, kun sisällytät kyselyyn taulukoita tai kyselyjä. Et luo kuitenkaan vähintään yhtä eksplisiittistä liitosta kullekin taulukolle tai kyselylle. Access yhdistää jokaisen taulukon tai kyselyn kaikki rivit, joita ei ole erikseen liitetty mihinkään toiseen taulukkoon, tai kyselyä tulosten jokaiseen toiseen riviin. Mieti edellisessä kappaleessa mainittua hyvitysskenaariota. Oletetaan, että sinulla on 91 asiakasta ja haluat laskea viiden mahdollisen hyvitysprosentin. Ristiliitoksen tuloksena on 455 riviä (rivien 91 ja 5 tulo).
Kuten arvata saattaa, tahattomat ristiliitokset voivat luoda valtavan määrän rivejä kyselyn tuloksiin. Lisäksi nämä tulokset ovat yleensä merkityksettömiä, sillä jos et aio yhdistää kaikkia rivejä kaikkiin riveihin, useimmissa tuloksissa näkyvissä yhdistetyissä riveissä ei ole järkeä. Tahattomia ristiliitoksia käyttävien kyselyjen suoritus voi kestää hyvin kauan.
1. Ympyröidyt kentät on liitettävä toisiinsa.
1. Huomaa, että tietueita on erittäin paljon.
1. Huomaa, että tietueiden määrä on paljon pienempi.
Sivun alkuun
Taulukoiden liittäminen kenttien arvojen epätasa-arvon perusteella
Liitosten ei tarvitse perustua liitettyjen kenttien vastaavuuteen . Liitos voi perustua mihin tahansa vertailuoperaattoriin, kuten suurempi kuin (),> pienempi kuin (<) tai eri suuri kuin (<>). Liitoksia, jotka eivät perustu vastaavuuteen, kutsutaan vertailuliitoksiksi.
Jos haluat yhdistää kahden tietolähteen rivit perustuen erilaisiin kenttäarvoihin, käytä eri suuri kuin liitos -funktiota. Yleensä liitokset, joiden arvo on suurempi (tai> pienempi kuin), pienempi (tai< yhtä suuri kuin), suurempi tai yhtä suuri kuin (>=) tai pienempi tai yhtä suuri kuin (<=). Eri suuri kuin (<>) -operaattoriin perustuvat erisuuret liitokset voivat palauttaa lähes yhtä monta riviä kuin ristiliitokset, ja tuloksia voi olla vaikea tulkita.
Ohjevalikko käyttää epätasa-arvoista liitosta?
Liitokset, jotka ovat erisuuret, eivät ole tuettuja rakennenäkymässä. Jos haluat käyttää niitä, sinun on käytettävä SQL-näkymää. Voit kuitenkin luoda liitoksen rakennenäkymässä, siirtyä SQL-näkymään, etsiä yhtä suuri kuin (=) -vertailuoperaattorin ja muuttaa sen operaattoriksi, jota haluat käyttää. Tämän jälkeen voit avata kyselyn rakennenäkymässä uudelleen, jos muutat ensin vertailuoperaattorin takaisin yhtä suuri kuin (=) -operaattoriksi SQL-näkymässä.
Liitoksen poistaminen
Jos Access luo automaattisesti liitoksen, jota et halua, tai jos luot liitoksen vahingossa – esimerkiksi liitoksen kahden tietotyypiltään eri kentän välille – voit poistaa liitoksen.
- Napsauta kyselyn rakenneruudukossa liitosta, jonka haluat poistaa.
- Paina DELETE-näppäintä.
-tai-
- Napsauta poistettavaa liitosta hiiren kakkospainikkeella kyselyn rakenneruudukossa ja valitse Poista.
Sivun alkuun
Tietueiden lisääminen taulukkoon liittämiskyselylläUseiden valintakyselyiden tulosten yhdistäminen yhdistämiskyselyn avullaKyselyn luominen useiden taulukoiden pohjaltaYhteyden luominen, muokkaaminen tai poistaminen