Tabelite ja päringute ühendamine

Tabelite ja päringute ühendamine

NB! :  See artikkel on masintõlgitud, vaadake lahtiütlust. Selle artikli ingliskeelse versiooni leiate aadressilt (viiteks).

Mitme andmeallika kaasamisel päringusse on soovitatav kasutada ühendusi kuvatavate kirjete arvu piiramiseks. Ühendamine põhineb andmeallikate omavahelistel seostel. Ühenduste abil saate ka kombineerida kirjeid mõlemast andmeallikast nii, et allikate igast kirjepaarist saab päringutulemites üks kirje.

Selles artiklis käsitletakse erinevaid ühendusetüüpe ja näidatakse, kuidas neid päringus kasutada. Vaikimisi ühendus luuakse automaatselt kui kasutate päringus kahe andmeallikate vahelise on juba seose. Ühenduse luuakse ka siis, kui seal on väljad selgelt üksteisele vastavad. Saate kustutada ka automaatselt loodud ühendus. Selles artiklis on toodud põhiteavet Tabeliseoste, sh loomist.

Märkus. : Saate liituda päringute tabelite ühendamine ja saate liituda ka mõlemad samal viisil.

Selle artikli teemad

Ülevaade

Ridade kuvamine ühendatud tabelite ühise väärtuse korral

Ühe tabeli kõigi ridade ja teise tabeli vastavate ridade kuvamine

Mõlema tabeli kõigi ridade kuvamine ja nendega liituda, kus ühise väärtuse korral

Ristühendused

Väljaväärtuste ebavõrdsuse põhjal tabelite ühendamine

Ühenduse kustutamine

Ülevaade

Andmebaasi on andmeid, mis olema üksteisega loogilised seosed tabelite kogum. Ühendage tabelid, väljad, mida nad on ühist seoste abil. Tabel võib olla mis tahes arv seosed osa, kuid iga seos on alati täpselt kaks tabelit. Päringu, esindab seose ühenduse.

Päringusse tabelite lisamisel loob Microsoft Office Access 2007 ühendused, mis põhinevad tabelite vahel määratletud seostel. Päringutes saate ühendusi käsitsi luua, isegi juhul, kui need ei tähista juba määratletud seoseid. Kui kasutate päringu andmeallikatena (tabelite asemel või neile lisaks) muid päringuid, saate luua ühendusi lähtepäringute vahel ning andmeallikatena kasutatavate päringute ja tabelite vahel.

Ühendused käituvad sama moodi nagu päringukriteeriumid – loovad reeglid, millele andmed peavad vastama, et need kaasataks päringutoimingutesse. Erinevalt kriteeriumidest määravad ühendused ka selle, et iga ühenduse tingimustele vastav reapaar ühendatakse kirjekomplekti, mis moodustab ühe rea.

On nelja tüüpi ühendusi: sisemised ühendused, välised ühendused, ristühendused ning ebavõrdsed ühendused. Käesolevas artiklis käsitletakse kõiki ühendusetüüpe, mida saate kasutada, olukordi, millal mingit tüüpi kasutada ning kuidas ühendusi luua.

Lehe algusse

Ridade kuvamine ühendatud tabelite ühise väärtuse korral

Kui soovite kuvada ainult read, millel on ühendatud väljal kattuvad väärtused, kasutage sisemist ühendust. Access loob sisemised ühendused automaatselt.

Sisemised ühendused on ühenduste levinuim tüüp. Need teavitavad päringut, et ühe ühendatud tabeli read vastavad ühendatud väljade andmete põhjal teise tabeli ridadele. Sisemise ühendusega päringu käivitamisel kaasatakse päringutoimingutesse ainult need read, kus mõlemas ühendatud tabelis on ühine väärtus.

Kuidas sisemist ühendust kasutada?

Enamasti ei pea te sisemise ühenduse kasutamiseks midagi tegema. Kui päringusse lisatavad tabelid sisaldavad juba seoseid, loob Access automaatselt tabelite lisamisel iga seotud tabelite paari vahel sisemise ühenduse. Kui jõustatakse viiteterviklus, kuvab Access ühendusejoone kohal arvu "1", et näidata, milline tabel asub üks-mitmele-seos poolel "üks", ja lõpmatuse sümboli () seose poolel "mitmele" asuva tabeli puhul.

Isegi kui te pole seoseid loonud, loob Access automaatselt sisemised ühendused juhul, kui lisate päringusse kaks tabelit ja neil tabelitel on igaühel sama või ühilduva andmetüübiga väli ning üks ühendusväljadest on primaarvõti. Sel juhul sümboleid "üks" ja "mitmele" ei kuvata, kuna viitamisterviklus pole jõustatud.

Kui lisate oma päringule päringuid, kuid pole nende vahel seoseid loonud, ei loo Access nende päringute ega päringute ja tabelite vahel automaatselt sisemisi ühendusi. Üldiselt peaksite need ise looma. Sisemise ühenduse loomiseks lohistage ühe andmeallika väli teise andmeallika väljale. Access kuvab nende kahe välja vahele joone, näitamaks, et ühendus on loodud.

Sisemise ühenduse SQL-süntaks

SQL-is on sisemised ühendused määratud FROM-klauslis, nagu allpool näidatud:

FROM Tabel1 INNER JOIN Tabel2 ON Tabel1. field1compare Tabel2. väli2

Toiming INNER JOIN koosneb järgmistest osadest.

Osa

Kirjeldus

tabel1, tabel2

Nende tabelite nimed, mille kirjed liidetakse.

väli1, väli2

Ühendatavate väljade nimed. Kui need pole numbriväljad, peab väljadel olema sama andmetüüp ja need peavad sisaldama sarnaseid andmeid, kuid neil ei pea olema sama nimi.

võrdlus

Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>".

Sisemise ühenduse süntaksi kohta lisateabe saamiseks lugege teemat toiming INNER JOIN.

Lehe algusse

Ühe tabeli kõigi ridade ja teise tabeli vastavate ridade kuvamine

Välised ühendused teavitavad päringut, et kuigi mõni ühenduse mõlema poole rida kattub täpselt, peaks päring sisaldama kõiki ühe tabeli ridu ning neid teise tabeli ridu, mis jagavad ühenduse mõlemal poolel ühist väärtust.

Välised ühendused võivad jääda välisteks või olla parempoolsed välised ühendused. Vasakpoolse välise ühendamise puhul kaasatakse päringusse kõik SQL-lause FROM-klausli esimese tabeli read ning ainult need teise tabeli read, kus ühendav väli sisaldab mõlema tabeli väärtusi. Parempoolse välise ühendamise puhul kaasatakse päringusse kõik SQL-lause FROM-klausli teise tabeli read ning ainult need teise tabeli read, kus ühendav väli sisaldab mõlema tabeli väärtusi.

Märkus. : Saate hõlpsalt määrata, milline on antud ühenduse vasak või parem tabel, topeltklõpsates ühendust ning seejärel vaadates dialoogiboksi Atribuutide ühendamine. Võite ka aktiveerida SQL-vaate ning seejärel uurida FROM-klauslit.

Kuna mõnel välise ühenduse ühe poole real pole teises tabelis vastavaid ridu, on mõni päringutulemites tagastatav teise tabeli väli tühi.

Kuidas välist ühendust kasutada?

Välise ühenduse loomiseks muutke olemasolevat sisemist ühendust. Kui seda pole, looge see ja seejärel muutke see väliseks ühenduseks.

Sisemise ühenduse muutmine väliseks ühenduseks

  1. Topeltklõpsake päringu kujundusvaates muudetavat ühendust.

    Kuvatakse dialoogiboks Atribuutide ühendamine.

  2. Jätke dialoogiboksis Atribuutide ühendamine meelde suvandi 2 ja 3 kõrval loetletud valikud.

  3. Klõpsake suvandit, mida soovite kasutada, ja seejärel nuppu OK.

  4. Access kuvab ühenduse ja noole, mis osutab andmeallikast, kuhu kõik read kaasatakse, andmeallikale, kuhu kaasatakse ainult need read, mis vastavad ühenduse tingimustele.

Mitmetähenduslikud välised ühendused

Kui te creaate päring, mis sisaldab LEFT JOIN ja SISEMINE ÜHENDUS Access ei pruugi kindlaks teha, milline ühendamine tuleb esimesena teha toiming. Kuna tulemused erinevad sõltuvalt sellest, kas vasakpoolne ühendamine või sisemine ühendus tehakse esimest, Access kuvab tõrketeate:

Selle vea parandamiseks saate muutke päringut nii, et oleks selge, milline ühendamine tuleb põhilisel esmalt.

Välise ühenduse SQL-süntaks

SQL-is on välised ühendused määratud FROM-klauslis, nagu allpool näidatud:

FROM Tabel1 [VASAKULE | ÕIGE] JOIN Tabel2
table1.field1compare TABEL2.VÄLI2

Toimingud LEFT JOIN ja RIGHT JOIN koosnevad järgmistest osadest.

Osa

Kirjeldus

tabel1, tabel2

Nende tabelite nimed, mille kirjed liidetakse.

väli1, väli2

Liidetavate väljade nimed. Väljadel peab olema sama andmetüüp ja need peavad sisaldama sarnaseid andmeid, kuid neil ei pea olema sama nimi.

võrdlus

Suvaline relatsiooniline võrdlusmärk: "=", "<", ">", "<=", ">=" või "<>".

Välise ühenduse süntaksi kohta lisateabe saamiseks lugege teemat LEFT JOIN, RIGHT JOIN toimingud.

Lehe algusse

Mõlema tabeli kõigi ridade kuvamine ja nendega liituda, kus ühise väärtuse korral

Kui soovite kuvada kahe tabeli kõigi ridade ning nende levinud väärtuste põhjal, kasutage täieliku välise ühendamise. Access ei toeta otseselt täielikku välised ühendused, kuid võite saavutada sama mõju Ühispäringu abil. Järgnevalt selgitatakse seda teha, kuid kui soovite lisateavet ühispäringute, leiate jaotisest Vt ka .

Ühispäringu kasutamine täieliku välise ühendamise jaoks.

  1. Looge päring, milles on vasakpoolne väline ühendamine väljal, mida soovite kasutada täielikus välises ühendamises.

  2. Klõpsake menüü Avaleht jaotise Vaated nuppu Vaade ning seejärel käsku SQL-i vaade.

  3. SQL-koodi kopeerimiseks vajutage klahvikombinatsiooni CTRL+C.

  4. Kustutage FROM-klausli lõpust semikoolon ja vajutage sisestusklahvi (ENTER).

  5. Sisestage klausel UNION ja seejärel vajutage sisestusklahvi (ENTER).

    Märkus. : Kasutades ühispäringut täieliku välise ühendamise tegemiseks, ärge kasutage võtmesõna ALL.

  6. Sammus 3 kopeeritud SQL-koodi kleepimiseks vajutage klahvikombinatsiooni CTRL+V.

  7. Asendage kleebitud koodis tekst LEFT JOIN tekstiga RIGHT JOIN.

  8. Kustutage teise FROM-klausli lõpust semikoolon ja vajutage sisestusklahvi (ENTER).

  9. Lisage WHERE-klausel, mis määrab FROM-klauslis märgitud esimese tabeli (vasakpoolne tabel) liitmiseks kasutatava välja väärtuseks NULL.

    Oletame, et FROM-klausel on järgmine.

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Sel juhul tuleks lisada selline WHERE-klausel.

WHERE Products.ID IS NULL

  1. Tippige WHERE-klausli lõppu semikoolon näitamaks ühispäringu lõppu.

  2. Klõpsake menüü Kujundus jaotises Tulemid nuppu Käivita.

Ristühendused

Ristühendused erinevad sisemistest ja välistest ühendustest selle poolest, et need pole rakenduses Office Access 2007 otseselt esindatud. Ristpäringu puhul ühendatakse ühe tabeli iga rida teise tabeli iga reaga, mille tulemusel saadakse nn ristkorrutis või otsekorrutis. Iga kord, kui käivitate päringu, mis sisaldab otseselt ühendamata tabeleid, saate tulemuseks ristkorrutise. Ristühendused on tavaliselt soovimatud, kuid mõnel juhul võivad need osutuda kasulikuks.

Millal ristühendust kasutada?

Kui soovite uurida igat kahe tabeli või päringu vahelist võimalikku ridade kombinatsiooni, kasutage ristühendust. Näiteks oletame, et teie ettevõttel on olnud suurepärane aasta ning soovite teha oma klientidele hinnaalandeid. Saate koostada päringu, mis summeerib iga kliendi ostud, luua väikese tabeli, mis sisaldab mitmesuguseid võimalikke hinnaalandi protsente, ning ühendada need teise päringusse, mis sooritab ristühendamise. Lõpptulemuseks on päring, kus on kuvatud iga kliendi jaoks võimalike hinnaalandite kogum.

Kuidas ristühendust kasutada?

Ristühendus luuakse iga kord, kui kaasate oma päringusse tabeleid või päringuid, kuid ei loo iga tabeli või päringu jaoks vähemalt üht otsest ühendust. Acces ühendab tulemites iga teise reaga iga tabeli või päringu rea, mis pole otseselt ühegi tabeli ega päringuga seotud. Vaatleme eelmise lõigu hinnaalandistsenaariumi. Oletame, et teil on 91 klienti ning soovite kaaluda viit võimalikku hinnaalandi protsenti. Teie ristühendus loob 455 rida (91 ja 5 toode).

Nagu näha, võivad soovimatud ristühendused luua teie päringutulemites suure hulga ridu. Veelgi enam – need tulemid on üldiselt mõttetud, kuna kui te ei kavatse tegelikult iga rida iga teise reaga kombineerida, on enamik tulemites kuvatavaid ridu kasutud. Ning lõpuks: soovimatuid ristühendusi sisaldavate päringute sooritamine võtab väga kaua aega.

Unintentianl cross Liitu päringu kujundusvaates
Soovimatu ristühendus päringu kujundusvaates.

1. Ringiga ümbritsetud väljad tuleks üksteisega ühendada.

Soovimatu risttoode
Ülalkirjeldatud soovimatu ristühenduse tagastatud ristkorrutis.

1. Pange tähele kirjete suurt arvu.

Parandatud päringutulem
Tulemid pärast õige ühenduse loomist.

1. Pange tähele, et kirjete arv on palju väiksem.

Lehe algusse

Väljaväärtuste ebavõrdsuse põhjal tabelite ühendamine

Ühendused ei pea põhinema liidetud väljade ekvivalentsil. Ühendus võib põhineda suvalisel võrdlusmärgil (nt "suurem kui" (>), "väiksem kui" (<) või "ei võrdu" (<>). Ühendusi, mis ei põhine ekvivalentsil, nimetatakse ebavõrdseteks ühendusteks.

Kui soovite kombineerida ebavõrdsete väljaväärtuste põhjal kahe andmeallika read, saate kasutada ebavõrdset ühendust. Tavaliselt põhinevad ebavõrdsed ühendused võrdlusmärkidel "suurem kui" (>), "väiksem kui" (<), "suurem või võrdne" (>=) või "väiksem või võrdne" (<=). Võrdlusmärgil "ei võrdu" (<>) põhinevad ebavõrdsed ühendused võivad tagastada peaaegu sama palju ridu kui ristühendused ning tulemeid võib olla raske tõlgendada.

Kuidas ebavõrdset ühendust kasutada?

Kujundusvaates ebavõrdseid ühendusi ei toetata. Kui soovite neid kasutada, peate seda tegema SQL-vaates. Saate siiski luua ühenduse kujundusvaates, aktiveerida SQL-vaate, otsida võrdlusmärgi "võrdub" (=) ning muuta see märgiks, mida soovite kasutada. Pärast seda saate avada päringu kujundusvaates uuesti ainult juhul, kui muudate võrdlusmärgi SQL-vaates tagasi märgiks "võrdub" (=).

Lehe algusse

Ühenduse kustutamine

Kui Access loob automaatselt soovimatu ühenduse või kui loote selle kogemata ise – näiteks ühenduse kahe erinevate andmetüüpidega välja vahel – saate ühenduse kustutada.

  1. Klõpsake päringu kujundusruudustikus ühendust, mille soovite eemaldada.

  2. Vajutage kustutusklahvi DELETE

või

  • paremklõpsake päringu kujundusruudustikus ühendust, mille soovite eemaldada, ning seejärel klõpsake nuppu Kustuta.

Lehe algusse

Märkus. : Masintõlke lahtiütlus. Selle artikli tõlkis arvutisüsteem ilma inimese sekkumiseta. Microsoft pakub selliseid masintõlkeid, et inglise keelt mittekõnelevad kasutajad saaksid vaadata sisu Microsofti toodete, teenuste ja tehnoloogiate kohta. Kuna artikkel on masintõlgitud, võib see sisaldada sõnavara-, süntaksi- või grammatikavigu.

Vt ka

Kirjete lisamine tabelisse lisanduspäringu abil

Kombineerimine tulemuste mitut valikupäringute Ühispäringu abil

Loomine mitme tabeli päringu

Luua, redigeerida või kustutada seost

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×