Duomenų šaltinių jungimas užklausoje

Svarbu :  Šis straipsnis išverstas naudojant mašininį vertimą, žr. atsakomybės atsisakymą. Su šio straipsnio versija anglų kalba galite susipažinti čia .

Kai į užklausą įtraukiate kelis duomenų šaltinius, naudokite sujungimus, kad apribotumėte įrašus, kurių nenorite matyti, atsižvelgdami į tai, kaip duomenys yra vienas su kitu susiję. Taip pat naudokite sujungimus įrašams iš abiejų duomenų šaltinių derinti taip, kad kiekviena įrašų pora iš šaltinių taptų vienu įrašu užklausos rezultatuose.

Šiame straipsnyje aptariami įvairūs sujungimų tipai ir parodoma, kaip juos naudoti užklausoje.

Pastaba : Šiame straipsnyje terminų lentelės naudojama kaip duomenų šaltinį. Taip pat galite naudoti užklausą sujungimo, taip pat kaip lentelę.

Apžvalga

Vidinis sujungimas: rodomos eilutės, kuriose pateikiamos bendrosios abiejų sujungtų lentelių reikšmės

Kairysis arba dešinysis išorinis sujungimas: rodomos visos eilutės iš vienos lentelės ir atitinkamos eilutės iš kitos lentelės

Visas išorinis sujungimas: rodomos visos eilutės iš abiejų lentelių, jos derinamos jei yra bendrų reikšmių

Kryžminis sujungimas: visi galimi eilučių deriniai

Nelygiavertis sujungimas: įrašai derinami, atsižvelgiant į laukų reikšmių nelygiavertiškumą

Sujungimo naikinimas

Apžvalga

Kokie sujungimai naudojami užklausose priklauso nuo to, kokie yra ryšiai su lentelėmis: nuoroda, kaip dviejų šaltinių duomenys gali būti derinami, atsižvelgiant į jų bendras duomenų reikšmes. Čia pateikiama užklausos, rodomos dizaino rodinyje, sujungimo ir jo ypatybių, atidarytų dialogo lange, iliustracija:

Laukas Sujungimo ypatybės.

Ši linija, jungianti lenteles atitinka sujungimą. Dukart spustelėkite prisijungti, kad atidarytumėte į Sujungimo ypatybės dialogo langas (pavaizduoti) ir arba keisti sujungimą.

Kartais sujungimai yra tiesioginiai. Ši dialogo lango sritis parodo kuri lentelė atitinka lentelę sujungime ir kurie laukai naudojami lentelėms jungti.

Šioje srityje nustatomas sujungimo tipas: 1 parinktis yra vidinis sujungimas, 2 yra kairysis išorinis sujungimas, o 3 – dešinysis išorinis sujungimas.

Gali būti naudojami abiejų lentelių laukai ir rodomi kiekvienos iš jų laukai, susiję su šia užduotimi. Į vidinį sujungimą kiti duomenys neįtraukiami. Išoriniame sujungime nesusiję įrašai iš vienos lentelės taip pat įtraukiami į užklausos rezultatus.

Kai kurie sujungimai sukuriami automatiškai

Daugeliu atvejų neturite galvoti apie sujungimus – jei į jūsų užklausą įtrauktos lentelės jau turi ryšį, „Access“ sukuria vidinį sujungimą, atspindintį šį ryšį. Iš esmės tai yra kaip tik tai, ko norite: būdas įsitikinti, kad iš abiejų lentelių gauti duomenys yra tinkamai suderinti taip, kad būtų įtraukti tinkami duomenys iš kiekvienos lentelės ir nieko kita. Bet kai kuriais atvejais galite norėti, kad sujungimas apimtų daugiau.

Sujungimų tipai

Yra keturi pagrindiniai sujungimų tipai: vidiniai sujungimai, išoriniai sujungimai, kryžminiai sujungimai ir nelygiaverčiai sujungimai. Kryžminiai sujungimai ir nelygiaverčiai sujungimai yra išplėstiniai sujungimo tipai ir retai naudojami, bet turėtumėte žinoti apie juos ir suprasti, kaip jie veikia.

Vidiniai sujungimai: derinami tik susiję abiejų lentelių duomenys

Į vidinį sujungimą „Access“ įtraukia duomenis tik iš lentelės, jei susijusioje lentelėje yra atitinkamų duomenų, ir atvirkščiai. Daugiausiai naudosite vidinius sujungimus. Sukūrus sujungimą ir nenurodžius, kokios jis rūšies, „Access“ nusprendžia, kad pageidaujate vidinio sujungimo. Vidiniai sujungimai naudingi, nes leidžia derinti dviejų šaltinių duomenis, atsižvelgiant į bendrinamas reikšmes – taigi matote duomenis tik tada, kai jie sudaro visą paveikslą.

Išoriniai sujungimai: tinkamai derinami visi susiję duomenys ir visi likę vienos lentelės duomenys

Išorinis sujungimas yra panašus į vidinį sujungimą, bet apima likusias eilutes iš vienos lentelės. Išoriniai sujungimai yra tiesioginiai: kairysis išorinis sujungimas apima visus įrašus iš kairiosios lentelės (pirmosios lentelės sujungime), o dešinysis išorinis sujungimas apima visus įrašus iš dešiniosios lentelės (antrosios lentelės sujungime).

Visas išorinis sujungimas: visi duomenys, derinami, kai tai įmanoma

Kai kuriose sistemose išorinis sujungimas gali apimti visas eilutes iš visų lentelių ir eilutes, suderintas su jų atitikmenimis. Jis vadinamas visu išoriniu sujungimu ir „Access“ visiškai nepalaiko tokių sujungimų. Tačiau galite naudoti kryžminį sujungimą bei kriterijus ir pasiekti tą patį efektą.

Kryžminiai sujungimai: visi duomenys, derinami bet kokiu galimu būdu

Dažniausiai kryžminis sujungimas gaunamas kaip pašalinis efektas, kai į užklausą įtraukiamos dvi lentelės, o tada pamirštama jas sujungti. „Access“ interpretuoja tai, kaip norą matyti kiekvieną įrašą iš vienos lentelės suderintą su kiekvienu įrašu iš kitos lentelės – bet koks galimas įrašų derinys. Duomenų, kuriuos būtų galima derinti pasitaiko nedažnai, todėl šio tipo sujungimas retai pateikia naudingų rezultatų. Tačiau yra keli atvejai, kai kryžminis sujungimas yra tai, ko jums reikia.

Nelygiavertis reikšmių sujungimas: veikia kaip įprastas sujungimas, tačiau derina eilutės kitaip jas lygindamas

Nelygiaverčiame sujungime lyginant reikšmes ir nustatant, ar reikia derinti duomenis ir kaip juos derinti, naudojamas ne lygybės ženklas (=), bet kitas operatorius. Nelygiaverčiai sujungimai nėra visiškai palaikomi, tačiau galite naudoti kryžminį sujungimą bei kriterijus ir pasiekti tą patį efektą.

Puslapio viršus

Vidinis sujungimas: rodomos eilutės, kuriose pateikiamos bendrosios abiejų sujungtų lentelių reikšmės

Jei norite, kad būtų rodomos tik tos eilutės, kuriose yra atitinkamų reikšmių jungtiniame lauke, naudokite tik vidinį sujungimą. „Access“ sukurs vidinius sujungimus automatiškai.

Vidiniai sujungimai yra dažniausiai pasitaikantis sujungimo tipas. Jie perduoda užklausai, kad vienos iš sujungtų lentelių eilutės atitiktų eilutes kitoje lentelėje, atsižvelgiant į bendras reikšmes jungtiniuose laukuose. Kai vykdoma užklausa su vidiniu sujungimu, į užklausos operacijas bus įtrauktos tik eilutės su bendromis reikšmėmis abiejose sujungtose lentelėse.

Kaip naudoti vidinį sujungimą?

Jei norite sukurti vidinį sujungimą, nuvilkite lauką iš vieno duomenų šaltinio į lauką kitame duomenų šaltinyje užklausos dizaino tinklelyje. „Access“ sujungia dvi lenteles laukuose ir rodo liniją tarp jų.

Automatiniai vidiniai sujungimai

Paprastai jums nieko nereikia daryti, kad naudotumėte vidinį sujungimą, jei lentelės, kurias įtraukiate į užklausą jau turi ryšius, „Access“ automatiškai sukuria vidinį sujungimą tarp kiekvienos susijusių lentelių poros įtraukus lenteles. Jei nuorodų vientisumas įgalintas, programa „Access“ virš sujungimo eilutės taip pat rodo „1“, reiškiantį, kuri ryšys „vienas – daug“ lentelė yra dalis „vienas“, ir rodo begalybės simbolį (), reiškiantį, kuri lentelė yra dalis „daugelis“.

Net jei nesate sukūrę ryšių, „Access“ automatiškai sukuria vidinius sujungimus, į užklausą įtraukus dvi lenteles, o šios dvi lentelės kiekviena turi lauką tuo pačiu pavadinimu ir tuo pačiu arba suderinamu duomenų tipu, jei vienas iš laukų yra šios lentelės pirminis raktas. Simboliai „vienas“ ir „daugelis“ šiuo atveju nerodomi, nes nuorodų vientisumas neįgalintas.

Jei į užklausą įtraukiate kitas užklausas ir tarp jų nesukuriate ryšių, programa „Access“ automatiškai nesukuria vidinio sujungimo tarp tų užklausų ar užklausų ir lentelių. Iš esmės jūs turėtumėte sukurti jas patys (nuvilkdami lauką iš vieno duomenų šaltinio į lauką kitame duomenų šaltinyje). Jei to nepadarysite, gali būti sukurtas kryžminis sujungimas – trikdantis rezultatas, jei tai yra ne tai, ko norėjote.

Vidinio sujungimo SQL sintaksė

Vidiniai sujungimai surodyti SQL sąlygoje FROM, kaip rodoma žemiau:

FROM lentelė1 INNER JOIN lentelė2 ON lentelė1.laukas1lyginimo_operatorius lentelė2.laukas2

Operacija INNER JOIN yra sudaryta iš šių dalių:

Dalis

Aprašas

lentelė1, lentelė2

Lentelių, kurių įrašai suderinti, pavadinimai.

laukas1, laukas2

Sujungiamų laukų pavadinimai. Jei jie nėra skaičius, laukai turi būti to paties duomenų tipas ir turėti vienodos rūšies duomenis, bet jų pavadinimas negali būti toks pat.

lyginimo_operatorius

Bet kuris santykinis lyginimo operatorius: „=“, „<“, „>“, „<=“, „>=“ arba „<>“.

Daugiau informacijos apie vidinio sujungimo sintaksę rasite temoje Operacija INNER JOIN.

Puslapio viršus

Kairysis arba dešinysis išorinis sujungimas: rodomos visos eilutės iš vienos lentelės ir atitinkamos eilutės iš kitos lentelės

Išoriniai sujungimai perduoda užklausai, kad, nors kai kurios eilutės abiejose sujungimo pusėse tiksliai atitinka, užklausa turėtų apimti visas eilutes iš vienos lentelės taip pat ir eilutes iš kitos lentelės, kuriose bendrinama abiejų sujungimo pusių bendrosios reikšmės (duomenys sujungiami, kai abi lentelės apima eilutę).

Išorinis sujungimas gali būti kairysis arba dešinysis. Kairiojo išorinio sujungimo užklausos SQL sakinio sąlygoje FROM yra visos eilutės iš pirmosios lentelės ir tik tos eilutės iš kitos lentelės, kurių sujungiamajame lauke yra bendros abiejų lentelių reikšmės. Dešiniojo išorinio sujungimo užklausos SQL sakinio sąlygoje FROM yra visos eilutės iš antrosios lentelės ir tik tos eilutės iš kitos lentelės, kurių sujungiamajame lauke yra bendros abiejų lentelių reikšmės.

Pastaba : Jūs galite lengvai pasakyti, kuri lentelė yra kairioji lentelė arba Dešinioji lentelė nurodytą sujungimo dukart spustelėjus sujungimą ir peržiūrėjus į dialogo langas Sujungimo ypatybės . Arba, kaip SQL rodinį, galite patikrinti sujungimo išsamios sąlygos from.

Kadangi kai kurios vienos išorinio sujungimo pusės eilutės neturi atitinkamų eilučių kitoje lentelėje, keli kitos lentelės laukai, kuriuos grąžins užklausos rezultatai, bus tušti dėl eilučių neatitikimo.

Kaip naudoti išorinį sujungimą?

Galite kurti išorinį sujungimą modifikuodami esamą vidinį sujungimą. Jei vidinio sujungimo nėra, galite jį sukurti, tada pakeisti jį išoriniu sujungimu.

Vidinio sujungimo keitimas išoriniu sujungimu

  1. Užklausos dizaino rodinyje dukart spustelėkite norimą keisti sujungimą.

    Į rodomas dialogo langas Sujungimo ypatybės .

  2. Į į dialogo langas Sujungimo ypatybės , Pastaba pasirinkimai, išvardytus šalia parinkčių 2 ir 3.

  3. Spustelėkite norimą naudoti, o tada spustelėkite parinktį gerai.

  4. Programa „Access“ rodo sujungimą ir rodyklę, nukreiptą nuo duomenų šaltinio, kurio visos eilutės bus įtrauktos, į duomenų šaltinį, iš kurio bus įtrauktos tik eilutės, atitinkančios sujungimo sąlygą.

Neaiškūs išoriniai sujungimai

Jei sukuriate užklausą, kuri apima LEFT JOIN ir INNER JOIN, „Access“ gali nenustatyti, kurią sujungimo operaciją pirmiausia atlikti. Rezultatai skirsis, atsižvelgiant į tai, ar pirmiausiai atliekamas kairysis, ar vidinis sujungimas, „Access“ rodo klaidos pranešimą apie neaiškius išorinius sujungimus.

Jei norite pataisyti šią klaidą, pakeiskite užklausą, kad būtų aišku, kurį sujungimą atkilti pirmiausiai.

Išoriniai sujungimai ir užklausos atnaujinamumas

Taikomojoje programoje „Access“ kelių lentelių užklausos laukas atnaujinamas tik jei išpildyta toliau nurodytos sąlygos.

  • Laukas yra iš užklausos lentelės „daugiausiai-daug“ – lentelės, kuri peržvelgia duomenis kitoje lentelėje.

  • Užklausos išvestyje yra pirminis raktas iš lentelės „daugiausiai-daug“.

  • Jei lentelė „daugiausiai-daug“ yra išorinio sujungimo dalis, ji yra vidinėje sujungimo dalyje: kairiojo išorinio sujungimo kairioji lentelė arba dešiniojo išorinio sujungimo dešinioji lentelė.

Jei kuri nors iš sąlygų yra netiesa, laukas bus tik skaitomas, nesvarbu, ar užklausos duomenų lauke, ar ta užklausa pagrįstame rodinyje.

Išorinio sujungimo SQL sintaksė

Išorinis sujungimas SQL sąlygoje FROM nurodomas taip:

FROM lentelė1 [ LEFT | RIGHT ] JOIN lentelė2
ON lentelė1.laukas1lyginimo_operatorius lentelė2.laukas2

Operacijos LEFT JOIN ir RIGHT JOIN yra sudarytos iš šių dalių:

Dalis

Aprašas

lentelė1, lentelė2

Lentelių, kurių įrašai suderinti, pavadinimai.

laukas1, laukas2

Sujungiamų laukų pavadinimai. Laukai turi būti to paties duomenų tipas ir turėti vienodos rūšies duomenis, bet jie neprivalo turėti to paties pavadinimo.

lyginimo_operatorius

Bet kuris santykinis lyginimo operatorius: „=“, „<“, „>“, „<=“, „>=“ arba „<>“.

Daugiau informacijos apie išorinio sujungimo sintaksę rasite temoje Operacijos LEFT JOIN ir RIGHT JOIN.

Puslapio viršus

Visas išorinis sujungimas: rodomos visos eilutės iš abiejų lentelių, jos derinamos jei yra bendrų reikšmių

Jei norite, kad būtų rodomos visos dviejų lentelių eilutės ir norite jas sujungti, atsižvelgdami į bendrąsias reikšmes, naudokite visą išorinį sujungimą. „Access“ visiškai nepalaiko visų išorinių sujungimų, tačiau galite pasiekti tokį pat efektą naudodami kryžminį sujungimą ir kriterijus.

  1. Sukurkite užklausą ir įtraukite dvi lenteles. Jei „Access“ sukuria kokius nors sujungimus, juos panaikinkite.

  2. Įtraukite bet kokius laukus, kurių norite šiai užklausos išvesčiai.

  3. Įtraukite jungtinius abiejų lentelių laukus ir išvalykite jiems skirtą žymės langelį eilutėje Rodyti.

  4. Užklausos dizaino tinklelyje, po pirmosios lentelės sujungimo lauku, įveskite antrosios lentelės sujungimo lauką eilutėje Kriterijai. Jei sujungtų laukų pavadinimas toks pat, įsitikinkite, kad juos nurodydami įtraukėte lentelės pavadinimą.

  5. Eilutėje arba po ką tik įvestu kriterijumi įveskite „Is Null“.

  6. Kitoje eilutėje arba (einančia iš karto po pirmąja eilute) po antrosios lentelės jungtiniu lauku įveskite „Is Null“.

Užklausa pateikia suderintą rinkinį sudarytą iš:

  • eilučių, kuriose atitiko jungtinės reikšmės ir duomenys buvo atitinkamai suderinti (vidinio sujungimo efektas);

  • eilučių, kuriose nėra pirmosios lentelės jungtinio lauko reikšmės (kairiojo išorinio sujungimo išorės efektas);

  • eilučių, kuriose nėra antrosios lentelės jungtinio lauko reikšmės (dešiniojo išorinio sujungimo išorės efektas).

Puslapio viršus

Kryžminis sujungimas: visi galimi eilučių deriniai

Bet kuriuo metu į užklausą įterpus lenteles, bet jų nesujungus, sukuriamas kryžminis sujungimas. „Access“ suderina kiekvieną eilutę iš vienos lentelės su kiekviena eilute iš kitos lentelės, taip gaunamas produktas, vadinamas kryžminiu arba „Cartesian“ produktu. Paprastai kryžminiai sujungimai nėra tai, ko norite, tačiau jie gali būti naudingi tiriant hipotezes.

Kodėl reikėtų naudoti kryžminį sujungimą?

Jei norite ištirti kiekvieną galimą, dviejų lentelių arba užklausų eilučių kombinaciją, naudokite kryžminį sujungimą. Tarkime, kad jūsų įmonei šie metai buvo puikūs ir svarstote galimybę klientams suteikti nuolaidą. Galite sukurti užklausą, kuri susumuos kiekvieno kliento pirkinius, sukurs mažą lentelę, turinčią kelis galimus permokos grąžinimo procentus, ir sujungs su kita užklausa, atliksiančia kryžminį sujungimą. Kryžminis produktų sujungimas parodys spėjamų kiekvieno kliento nuolaidų rinkinį – kaip tik tai, ko norite.

Kaip naudoti kryžminį sujungimą?

Į užklausą įtraukite dvi lenteles, nekurkite sujungimo tarp jų, ir įtraukite abiejų jų laukus į savo užklausos išvestį. „Access“ derina kiekvieną kiekvienos lentelės ar užklausos, kuri nėra visiškai sujungta su su bet kuria kita lentele ar užklausa, eilutę su kiekviena užklausos rezultatų eilute. Peržiūrėkite nuolaidų pavyzdį, pateiktą ankstesnėje pastraipoje. Įsivaizduokite, kad turite 91 klientą ir norite matyti penkis galimus permokos grąžinimo procentus. Kryžminis sujungimas pateiks 455 eilutes (produktas padaugintas iš 91 ir padaugintas iš 5).

Jei jūsų įtrauktos lentelės yra susietos, „Access“ automatiškai sukuria vidinį sujungimą. Galite panaikinti šį automatinį sujungimą, jei reikia pateikti kryžminį sujungimą.

Kaip jau supratote, naudojant kryžminį sujungimą užklausos rezultatuose gali būti sukurta daugybė eilučių. Dar daugiau, šie rezultatai iš esmės yra bereikšmiai, nes eilutės nederinamos bendrinamų duomenų pagrindu ir jų deriniai nieko neatitinka.

Puslapio viršus

Nelygiavertis sujungimas: įrašai derinami, atsižvelgiant į laukų reikšmių nelygiavertiškumą

Sujungimai neprivalo būti pagrįsti sujungiamų laukų lygiavertiškumu. Sujungimas gali būti sukurtas naudojant bet kurį lyginimo operatorių, pvz., daugiau nei (>), mažiau nei (<) arba nelygu (<>). Sujungimas, nepagrįstas lygiavertiškumu, vadinamas nelygiaverčiu sujungimu.

Jei norite sujungti dviejų duomenų šaltinių eilutes remdamiesi nelygiavertėmis lauko reikšmėmis, naudokite nelygiavertį sujungimą. Paprastai nelygiavertis sujungimas yra sukurtas naudojant lyginimo operatorius daugiau nei (>), mažiau nei (<), daugiau arba lygu (>=) ir mažiau arba lygu (<=). Nelygiavertis sujungimas, sukurtas naudojant operatorių nelygu (<>), gali grąžinti beveik tiek pat eilučių, kiek ir kryžminis sujungimas, o rezultatai gali būti neaiškūs.

Kaip naudoti nelygiavertį sujungimą?

„Access“ visiškai nepalaiko nelygiaverčių sujungimų dizaino rodinyje, tačiau galite pasiekti tą patį efektą naudodami kryžminį sujungimą ir kriterijus.

  1. Sukurkite užklausą ir įtraukite dvi nelygiaverčio sujungimo lenteles. Jei „Access“ sukuria kokius nors sujungimus automatiškai, juos panaikinkite.

  2. Įtraukite norimus išvesties laukus.

  3. Įtraukite jungtinį pirmos lentelės lauką ir išvalykite žymės langelį eilutėje Rodyti.

  4. Eilutėje Kriterijai įveskite norimą nelygybės operatorių, po kurio eina antras lentelės jungtinis laukas.

Užklausa pateikia eilutes, kuriose derinami duomenys iš dviejų lentelių, atsižvelgiant į jūsų nurodytą nelygiavertiškumą.

Puslapio viršus

Sujungimo naikinimas

Jei „Access“ automatiškai sukuria sujungimą, kurio nenorite, arba jei sukuriate sujungimą per klaidą pavyzdžiui, sujungimą tarp dviejų laukų, kurių duomenų tipai nepanašūs, galite panaikinti šį sujungimą.

  1. Užklausos kūrimo tinklelyje spustelėkite norimą pašalinti sujungimą.

  2. Paspauskite Naikinti.

-arba-

  • Užklausos dizaino tinklelyje, dešiniuoju pelės mygtuku spustelėkite prisijungti, kurį norite pašalinti, ir spustelėkite Naikinti.

Puslapio viršus

Pastaba : Mašininio vertimo atsakomybės atsisakymas: Šis straipsnis išverstas naudojant kompiuterinę sistemą be žmogaus įsikišimo. „Microsoft“ pateikia šiuos mašininius vertimus norėdama padėti anglų kalbos nesuprantantiems vartotojams perskaityti turinį apie „Microsoft“ produktus, paslaugas ir technologijas. Šis straipsnis išverstas mašininio vertimo būdu, todėl jame gali būti žodyno, sintaksės ar gramatikos klaidų.

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijunkite prie „Office Insider“ dalyvių

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×