Kahe tabeli võrdlemine ja vasteta kirjete otsimine - Access
Kahe tabeli võrdlemine ja vasteta kirjete otsimine
Mõnikord võib olla vajalik võrrelda kahte tabelit ja leida ühes tabelis kirjed, millele pole teises tabelis vastavaid kirjeid. Lihtsaim viis selliste kirjete tuvastamiseks on kasutada vasteta kirjete otsimise päringu viisardit. Kui viisard on päringu moodustanud, saate selle kujundust muuta, lisades või eemaldades välju või lisades ühendusi kahe tabeli vahel (et näidata ära väljad, mille väärtused peaksid kattuma). Vasteta kirjete leidmiseks saate ka ise ilma viisardi abita päringuid luua.
Selles artiklis kirjeldatakse, kuidas vasteta kirjete otsimise päringu viisard käivitada ja seda kasutada, kuidas muuta viisardi väljundit ning kuidas vasteta kirjete leidmiseks ise päringuid luua.
Märkus.: Vasteta kirjete otsimise päringu viisardit ei toetata Accessi veebirakendustes ega veebiandmebaasides.
Millal tuleks otsida vasteta kirjeid?
Kahe tabeli võrdlemine vasteta kirjete otsimise päringu viisardi abil
Vasteta kirjete otsimise päringu loomine ja muutmine mitme välja alusel võrdlemiseks
Oma päringu loomine vasteta kirjete otsimiseks
Järgmisena kirjeldame kahte levinud olukorda, mil võite soovida võrrelda kahte tabelit ja otsida vasteta kirjeid. Olenevalt konkreetsest olukorrast võib vasteta kirjete otsimine olla esimene mitmest toimingust, mida soovite teha. Selles artiklis käsitletakse ainult vasteta kirjete otsimist.
Talletate ühes tabelis andmeid mingi üksuse (nt toote) kohta ja teises tabelis selle üksusega seotud tegevuste (nt tellimuste) andmeid.
Näiteks andmebaasimallis Põhjatuul talletatakse tooteteavet tabelis Tooted ja teavet tellimustesse kaasatud toodete kohta tabelis Tellimuse üksikasjad. Kuna tabelis Tooted pole (selle olemusest lähtuvalt) andmeid tellimuste kohta, ei saa ainult tabeli Tooted põhjal määratleda, milliseid tooteid pole kunagi müüdud. Seda teavet ei saa määratleda ka ainult tabeli Tellimuse üksikasjad põhjal, kuna tabel Tellimuse üksikasjad sisaldab andmeid ainult müüdud toodete kohta. Selleks, et määratleda, milliseid tooteid pole kunagi müüdud, peate kahte tabelit võrdlema.
Kui soovite läbi vaadata esimese tabeli selliste osiste loendit, millel puuduvad teises tabelis vastavad tegevused, võite kasutada vasteta kirjete otsimise päringut.
Teil on kaks tabelit, mis sisaldavad kattuvat, liigset või vastuolulist teavet, ja soovite konsolideerida need üheks tabeliks.
Oletagem näiteks, et teil on üks tabeli nimega Tellijad ja teine tabel nimega Kliendid. Tabelid on peaaegu identsed, kuid üks või mõlemad tabelid sisaldavad mõnda kirjet, mis teises puudub. Tabelite konsolideerimiseks peate esmalt määratlema, millised kirjed on kummaski tabelis kordumatud.
Sellises olukorras võivad selles artiklis kirjeldatavad meetodid aidata, kuid tõenäoliselt ainult neist ei piisa. Vasteta kirjete tuvastamiseks saate käivitada vasteta kirjete otsimise päringu viisardi, kuid kui soovite tuua kombineeritud kirjekomplekti, looge tulemite abil ühispäring. Kui oskate kirjutada struktuurpäringukeeles (SQL) lauseid, soovite ehk vasteta kirjete otsimise päringu viisardist loobuda ja kirjutada ise ühispäringu.
Kattuva, liigse või vastuolulise teabe probleemi saab sageli lahendada kahes või enamas tabelis duplikaatkirjete otsimise abil.
Ühispäringute või duplikaatandmete otsimise, peitmise või kõrvaldamise kohta leiate lisateavet jaotises Vt ka olevaid linke klõpsates.
Märkus.: Selle artikli näited pärinevad andmebaasimalli Põhjatuul abil loodud andmebaasist.
Olenevalt sellest, milline on teie Accessi versioon, saate otsida malli Põhjatuul otsinguväljal või vasakpoolsel paanil, klõpsates jaotises Mallikategooriad valikut Kohalikud mallid.
Jaotises Kohalikud mallid klõpsake valikut Põhjatuul 2007 näidis ja seejärel valikut Loo.
Topeltklõpsake dialoogiboksis Uus päring suvandit Vasteta päringute otsimise viisard.
Valige viisardi esimesel lehel vasteta kirjeid sisaldav tabel ja seejärel klõpsake nuppu Edasi. Näiteks kui soovite näha Põhjatuule selliste toodete loendit, mida pole kunagi müüdud, valige tabel Tooted.
Teisel lehel valige seotud tabel ja seejärel klõpsake nuppu Edasi. Näite järgimiseks valige tabel Tellimuse üksikasjad.
Kolmandal lehel valige tabeleid siduvad väljad, klõpsake suvandit < = > ja seejärel nuppu Edasi. Saate valida igast tabelist ainult ühe välja. Selle näite alusel valige tabelist Tooted väli ID ja tabelist Tellimuse üksikasjad väli Toote ID. Veenduge, et vastendataks õiged väljad, kontrollides teksti väljal Kattuvad väljad.
Arvestage, et väljad ID ja Toote ID võivad olla juba valitud, kuna malli on sisse ehitatud olemasolevad seosed.
Neljandal lehel topeltklõpsake esimese tabeli välju, mida soovite näha, ja seejärel klõpsake nuppu Edasi. Näite alusel valige väljad ID ja Tootenimi.
Viiendal lehel saate valida, kas soovite vaadata tulemeid või muuta päringu kujundust. Selles näites klõpsake nuppu Kuva tulemid. Nõustuge soovitatud päringunimega ja seejärel klõpsake nuppu Valmis.
Võimalik, et soovite muuta oma päringu kujundust, et lisada muid kriteeriume, muuta sortimisjärjestust või lisada või eemaldada välju. Vasteta kirjete otsimise päringu muutmise kohta leiate teavet järgmisest teemast; üldisemat teavet päringute loomise ja muutmise kohta leiate jaotises Vt ka olevaid linke klõpsates.
Kolmandal lehel valige tabeleid siduvad väljad, klõpsake suvandit < = > ja seejärel nuppu Edasi. Saate valida igast tabelist ainult ühe välja. Selle näite alusel valige tabelist Tooted väli ID ja tabelist Tellimuse üksikasjad väli Toote ID. Veenduge, et vastendataks õiged väljad, kontrollides teksti väljal Kattuvad väljad. Ülejäänud väljad saate ühendada pärast viisardi lõpulejõudmist.
Viiendal lehel klõpsake valikut Muuda kujundust ja seejärel klõpsake Lõpeta.
Päring avaneb kujundusvaates.
Arvestage, et päringu kujundusruudustikus ühendatakse kaks tabelit nende väljade kaudu (antud näites ID ja Toote ID), mille määrasite viisardi kolmandal lehel. Looge iga järelejäänud seotud väljade paari jaoks ühendus, lohistades need esimesest tabelist (vasteta kirjetega tabelist) teise tabelisse. Antud näites lohistage tabelist Tooted väli Hinnakirjahind tabeli Tellimuse üksikasjad väljale Ühiku hind.
Topeltklõpsake ühendust (välju ühendavat joont), et kuvada dialoogiboks Ühenduse atribuudid. Valige iga ühenduse jaoks suvand, mis sisaldab kõiki tabeli Tooted kirjeid, ja seejärel klõpsake nuppu OK.
Pange tähele, et päringu kujundusruudustikus on nüüd igal ühendusel ühes otsas nool.
1. Kui loote ühenduse väljade Hinnakirjahind ja Ühiku hind vahel, piirab see väljundid mõlemast tabelist. Päringutulemitesse kaasatakse ainult mõlema tabeli väljadel kattuvate andmetega kirjed.
2. Pärast ühenduse atribuutide redigeerimist piirab ühendus ainult tabelit, millele nool osutab. Kõik selle tabeli kirjed, millest nool lähtub, kaasatakse päringutulemitesse.
Märkus.: Veenduge, et kõik ühenduste nooled osutaks samas suunas.
Topeltklõpsake seotud kirjetega tabelis (selles näites tabelis Tellimuse üksikasjad) igat esimese tabeliga ühendatud välja, välja arvatud välja, mille valisite viisardi kolmandal lehel (praegusel juhul väli Toote ID). Tühjendage kõigi nende väljade real Kuva olev ruut ja tippige reale Kriteeriumid tekst Is Null.
Võite lisada kriteeriumid ka muudele päringuväljadele või luua arvutatud väljad, mis põhinevad esimese tabeli väärtustel.
Päring tagastab selliste toodete nimed, mis ei kuulu ühtegi olemasolevasse tellimusse.
Klõpsake menüü Loo jaotises Päringud nuppu Päringu kujundus. Kui kasutate rakendust Access 2007, klõpsake menüü Loo jaotises Muu nuppu Päringu kujundus.
Topeltklõpsake dialoogiboksis Tabeli kuvamine tabelit, mis sisaldab vasteta kirjeid, ja seejärel topeltklõpsake tabelit, mis sisaldab seotud kirjeid.
Päringu kujundusruudustikus peaks kahte tabelit ühendama seotud väljade kaudu jooned (ühendused). Kui ühendusi pole, looge need, lohistades iga seotud välja esimesest tabelist (tabelist, mis sisaldab vasteta kirjeid) teise tabelisse (tabelisse, mis sisaldab seotud kirjeid).
Topeltklõpsake ühendust, et avada dialoogiboks Ühenduse atribuudid. Valige iga ühenduse puhul suvand 2 ja seejärel klõpsake nuppu OK.
Ühendused muutuvad päringu kujundusruudustikus nii, et nende ühes otsas kuvatakse nooled.
Märkus.: Veenduge, et kõik ühendused osutaks samas suunas. Päring ei käivitu, kui ühendused osutavad erinevates suundades, ega pruugi käivituda, kui mõni ühendus pole noolega. Ühendused peaks osutama eemale vasteta kirjeid sisaldavast tabelist.
Topeltklõpsake vasteta kirjeid sisaldavas tabelis välju, mille päring peaks tagastama.
Võite sisestada kriteeriumid millisele tahes neist väljadest või luua arvutatud väljad.
Topeltklõpsake seotud kirjeid sisaldavas tabelis iga välja, mis on ühendatud esimese tabeliga. Tühjendage kõigi nende väljade real Kuva olev ruut ja tippige reale Kriteeriumid tekst Is Null.
Duplikaatkirjete otsimine päringu abil
Mitme päringu ühendamine ühe tulemuse saamiseks ühispäringu abil