Mitme päringu ühendamine ühe tulemuse saamiseks ühispäringu abil

Mitme päringu ühendamine ühe tulemuse saamiseks ühispäringu abil

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

Oletame, et teie Accessi andmebaasis on kaks seostamata tabelitest – üks, mis talletab Kliendiandmete ja teise, mis salvestab andmed tarnijate kohta – ja mõlemas tabelis on väli kontaktteave. Soovite kontakti andmete mõlema tabeli ühes vaates. Esmalt Looge valikupäring iga tabeli teabe toomiseks ja seejärel ühendada need tulemid, Ühispäringu loomisel.

Märkus. : Selles artiklis sisu on mõeldud kasutamiseks Accessi töölauaandmebaasidega. Te ei saa luua ega kasutada Accessi veebipõhistes andmebaasides ja Accessi veebirakendustes Ühispäringu.

Kas vajate põhivalikpäringute loomise kohta mäluvärskendust? Teemast lihtsa valikupäringu loomine.

Ühispäringu loomisel peate esmalt teadma paari asja.

  • Ühendatavatel valikupäringutel peab olema sama palju väljundvälju ja need peavad olema samas järjekorras ja sisaldama sama või sarnast tüüpi andmeid. Ühispäringu käivitamisel ühendatakse kummagi tulemi andmed ühel väljundväljal, seega on päringu väljundil sama arv välju kui igal SELECT-lausel.

  • Ühispäring on SQL-spetsiifiline ja see tuleb seetõttu kirjutada otse SQL-keeles. SQL-spetsiifiliste päringute (sh ühispäringute) kirjutamiseks aktiveerige SQL-i vaade.

1. juhis: valikupäringute loomine

Märkus. : Kui saate päringusse kaasata mitu tabelit või päringut, eeldab see protseduur, et iga valikupäring kaasab andmeid ainult ühest tabelist.

  1. Klõpsake menüü Loo jaotises Päringud nuppu Päringukujundus.

  2. Topeltklõpsake dialoogiboksis Tabeli kuvamine tabelit, mis sisaldab välju, mida soovite kaasata. Tabel lisatakse päringu kujundusaknasse.

  3. Sulgege dialoogiboks Tabeli kuvamine.

  4. Topeltklõpsake päringu kujundusaknas igat välja, mille soovite kaasata.
    Väljade valimisel veenduge, et lisate iga valikupäringu jaoks sama arvu välju samas järjekorras. Pöörake tähelepanu väljade andmetüüpidele ja veenduge, et need oleksid teiste liidetavate päringute väljade järjekorras samal kohal olevate väljade andmetüüpidega ühilduvad. Näiteks kui teie esimeses valikupäringus on viis välja, millest esimene sisaldab kuupäeva-/kellaajaandmeid, veenduge, et kõigis muudes koostatavates valikupäringutes oleks samuti viis välja, millest esimene sisaldab kuupäeva-/kellaajaandmeid jne.

  5. Väljadele saate kriteeriume lisada ka tippides vastavad avaldised väljaruudustiku reale Kriteeriumid.

  6. Pärast väljade ja nende kriteeriumite lisamist peaksite päringu käivitama ja selle väljundi üle vaatama. Klõpsake menüü Kujundus jaotises Tulemid nuppu Käivita.

  7. Lülitage päring kujundusvaatesse.

  8. Salvestage valikupäring, kuid ärge seda sulgege.

  9. Korrake seda protseduuri iga valikupäringu suhtes, mida soovite liita.

Lisateavet päringus kriteeriumide kasutamise kohta leiate teemast Päringule kriteeriumide rakendamine.

2. juhis: päringute ühendamine

Selle toiminguga loote SQL-lausete abil ühispäringu. (Lisateavet leiate allolevast teemast SQL-süntaks.)

  1. Klõpsake menüü Loo jaotises Päringud nuppu Päringukujundus.

  2. Sulgege dialoogiboks Tabeli kuvamine.

  3. Klõpsake menüü Kujundus jaotises Päring nuppu Ühispäring.

Access peidab päringu kujundusakna ja kuvab SQL-i vaate objektivahekaardi. Praegu on SQL-i vaate objekti vahekaart tühi.

  1. Klõpsake esimese valikupäringu vahekaarti, mida soovite ühispäringusse liita.

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

  3. Kopeerige valikupäringu SQL-lause. Klõpsake 1. juhise järgi loodud ühispäringu vahekaarti.

  4. Kleepige valikupäringu SQL-lause ühispäringu SQL-i vaate objekti vahekaardile.

  5. Kustutage SQL-päringu lõpus olev semikoolon (;).

  6. Vajutage kursori järgmisele reale viimiseks sisestusklahvi (Enter) ja tippige uuele reale UNION.

  7. Klõpsake järgmise valikupäringu vahekaarti, mida soovite ühispäringusse liita.

  8. Korrake juhiseid 5–10, kuni olete kopeerinud ja kleepinud ühispäringu SQL-i vaatesse kõikide valikupäringute SQL-laused. Ärge kustutage semikoolonit viimase valikupäringu viimase SQL-lause tagant, samuti ärge tippige midagi selle järele.

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

Teie ühispäringu tulemused kuvatakse andmelehevaade.

Lehe algusse

Näpunäited ühispäringute kasutamiseks

  • Kui soovite vahet teha, millised read millisest tabelist tulid, lisage igasse valikpäringusse ühe väljana tekstilõik.

    Näiteks kui üks lause toob välju tabelist Tooted ja teine tabelist Teenused, lisage esimese lause lõppu tekst "Toode" ja teise lause lõppu tekst "Teenus". Väljadele saab võtmesõna AS abil anda ka pseudonüüme (nt "tüüp") nagu järgmises näites näha.

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Päringu väljund kaasaks välja "tüüp" ("type"), mis näitaks, kas rida tuli toodete või teenuste tabelist.

  • Iga võtmesõna UNION liidab talle vahetult eelnevaid ja vahetult järgnevaid valikpäringuid. Kui kasutate võtmesõna ALL osade, kuid mitte kõikide UNION võtmesõnade juures, kaasatakse tulemisse duplikaatread nendest SELECT-lausetest, mis on liidetud UNION ALL abil, aga ei kaasata duplikaatridu nendest SELECT-päringutest, mida liidetakse UNION-klausli abil, millega ei kaasne võtmesõna ALL.

  • Valikupäringute väljade arv, andmetüübid ja järjestus peab kattuma. Selle tagamiseks saate kasutada avaldisi (nt arvutusi või alampäringuid).

    Näiteks saate kahe- ja neljakohalise aastaarvu väljad vastavusse viia funktsiooni Right abil, mis ekstraktib neljakohalise aastaarvu kaks viimast numbrit.

Uue tabeli loomine ühispäringu tulemite abil

Kasutage esmalt ühispäringut uue valikupäringu sisendina ja seejärel võtke see omakorda tabelikoostepäringu aluseks, nagu järgmistes juhistes näidatakse.

  1. Ühispäringu loomine ja salvestamine

  2. Klõpsake menüü Loo jaotises Päringud nuppu Päringu kujundus.

  3. Klõpsake dialoogiboksi Tabeli kuvamine vahekaarti Päringud.

  4. Topeltklõpsake oma ühispäringut ja sulgege seejärel dialoogiboks Tabeli kuvamine.

    Märkus. : Kui teateribal kuvatakse turbehoiatus, võivad toimingupäringud olla keelatud. Toimingupäringute lubamiseks klõpsake lihtsalt teateribal nuppu Luba sisu.

  5. Kasutamaks kõiki ühispäringu välju uue tabeli loomisel, topeltklõpsake päringu kujundusvaates oma ühispäringu objekti vahekaardil tärni (*).

  6. Klõpsake menüü Kujundus jaotises Päringutüüp nuppu Tabeli koostamine.

  7. Tippige dialoogiboksi Tabeli koostamine uue tabeli nimi.

  8. Võite määrata ka erineva andmebaasi, kus tabel luua.

  9. Klõpsake nuppu OK.

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

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

Ühispäringut saab kasutada ka väline ühendamine. Täielik väline ühendamine ei sea piirangut ühendatud tabelite ridadele, kuid liidab read vastavalt liidetava välja väärtustele.

  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. Tippige UNION ja 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

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

  11. Klõpsake menüü Kujundus jaotises Tulemid nuppu Käivita.
    Teie ühispäringu tulemused kuvatakse andmelehevaade.

Lisateavet leiate teemast Andmeallikate ühendamine päringus.

Lehe algusse

Ühispäringu nõuded ja SQL-süntaks

Mõningad nõuded ühispäringule

  • Ühendatavatel valikupäringutel peab olema sama palju väljundvälju ja need peavad olema samas järjekorras ja sisaldama sama või sarnast tüüpi andmeid. Ühispäringu käivitamisel ühendatakse mõlema tulemi andmed ühel väljundväljal, seega on päringu väljundil sama arv välju kui igal SELECT-lausel.

    Märkus. : Ühispäringu jaoks on andmetüübid Number ja Tekst ühilduvad.

  • Ühispäring on SQL-spetsiifiline ja see tuleb seetõttu kirjutada otse SQL-keeles. SQL-spetsiifiliste päringute (sh ühispäringute) kirjutamiseks aktiveerige SQL-i vaade.

Ühispäringu SQL-i süntaks

Ühispäringus on igal valikupäringul (mida nimetatakse ka SELECT-lauseks) järgmised klauslid.

Klausel

Sisalduv loend

SELECT

Väljad, mis sisaldavad andmeid, mida soovite tuua

FROM

Neid välju sisaldavad tabelid

Valikuline WHERE

Nende väljade kriteeriumid

SELECT-laused on ühendatud võtmesõna UNION abil.

Ühispäringu SQL-põhisüntaks on järgmine.

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Kui teil on tabel nimega Tooted ja tabel nimega Teenused ja mõlemais tabeleis on väljad, mis sisaldavad toote või teenuse nime, hinda, garantiitingimusi ja saadavust ning teavet selle kohta, kas toodet või teenust pakutakse eksklusiivselt. Kuigi toodete tabelis on garantiitingimused ja teenuste tabelis on teave garantiiteenuse kohta, on põhiteave sama (kas tootel või teenusel on kvaliteeditagatis). Nende nelja välja liitmine mõlemast tabelist toimub järgmise ühispäringu abil.

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;

Analüüsime eelnevat näidet reakaupa.

Süntaks

Selgitus

Lisateave

SELECT nimi, hind, garantii_saadaval, eripakkumine

Esimene SELECT-klausel

Klauslile SELECT järgneb identifikaatorite loend, mis tähistavad välju, millelt soovite andmeid tuua.

Klauslis SELECT peab olema vähemalt üks väli.

Selles SELECT-klauslis loetletakse väljade identifikaatorid nimi, hind, garantii_saadaval ja eripakkumine.

FROM Tooted

Esimene FROM-klausel

FROM-klausel järgneb SELECT-klauslile ja koos moodustavad need lihtsa SELECT-lause.

FROM-klauslile järgneb loetelu nende tabelite identifikaatoritest, mis sisaldavad SELECT-klauslis loetletud välju.

FROM-klauslis peab olema loetletud vähemalt üks tabel.

See FROM-klausel loetleb tabeliidentifikaatori Tooted.

UNION ALL

Võtmesõna UNION ja valikuline võtmesõna ALL

UNION-klauslile eelneva SELECT-lause tulemid liidetakse UNION-klauslile järgneva SELECT-lause tulemitega.

Kui kasutada võtmesõna ALL, ei eemaldata ühispäringu tulemitest duplikaatridu.

Võtmesõna ALL abil saate päringut kiiremini käitada, kuna Access ei pea otsima duplikaatridu.

Kasutage võtmesõna ALL, kui mõni järgmistest tingimustest on tõene.

  • Kui olete kindel, valikupäring ei tagasta duplikaatridu.

  • Kui duplikaatridade puudumine tulemis pole oluline.

  • Kui soovite duplikaatridu näha.

SELECT nimi, hind, garantii_saadaval, eripakkumine

Teine SELECT-klausel

Mõni reegel

  • Teisel SELECT-klauslil peab olema sama arv välju nagu esimesel SELECT-klauslil.

  • Ühiseid andmeid jagavad väljad tuleb klauslil kuvada samas järjestuses.

  • Ühiseid andmeid jagavatel väljadel peab olema sama või ühilduv andmetüüp.

Märkus. : Väljade nimed ühispäringu väljundis on pärit esimesest SELECT-klauslist. Seega meie näite korral nimetatakse väljadelt "garantii_saadaval" ja "garantii_saadaval" toodud andmeid väljundis nimega "garantii_saadaval".

FROM Teenused

Teine FROM-klausel

Ühispäringu FROM-klauslite tabelitele pole rakendatud piiranguid. Saate luua ühispäringu, mis kasutab igas FROM-klauslis samu tabeleid või saate FROM-klauslites loetleda erineva arvu tabeleid.

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.

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.

×