Lentelių ir užklausų sujungimas

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

Kai norite įtraukti kelių duomenų šaltinių "Access" užklausą, naudokite sujungimai apriboti įrašai, kuriuos norite matyti, kaip tarpusavyje susiję su duomenų šaltiniais remiantis. Taip pat naudoti sujungimai sujungti įrašus iš abiejų duomenų šaltinių, kad kiekvienos poros įrašų šaltiniuose tampa vieną įrašą į užklausos rezultatus.

Šiame straipsnyje aptariami įvairūs sujungimų tipai ir parodo, kaip juos naudoti užklausoje. Pagal numatytuosius nustatymus sujungimo automatiškai sukuriamas, jei jau yra ryšio tarp dviejų duomenų šaltinius, galite naudoti užklausoje. Sujungimo sukuriamas taip pat, jei yra laukų, kurie aiškiai atitinka tarpusavyje. Galite panaikinti yra automatiškai sukurtą prisijungti. Šiame straipsnyje pateikiama pagrindinė informacija apie lentelių ryšius, pvz., kaip ją sukursite.

Pastaba : Sujunkite lenteles, ir taip pat galite prisijungti ir taip pat galite prisijungti užklausų.

Šiame straipsnyje

Apžvalga

Rodomos eilutės, kurioje yra bendrų reikšmių abiejų sujungtų lentelių

Rodomos visos eilutės iš vienos lentelės ir atitinkamos eilutės iš kitos lentelės

Rodomos visos eilutės iš abiejų lentelių, ir prie jų prisijungti, jei yra bendrų reikšmių

Kryžminis sujungimas

Sujunkite lenteles, atsižvelgiant į laukų reikšmių nelygiavertiškumą

Sujungimo naikinimas

Apžvalga

Duomenų bazės yra lentelių duomenų, kad ant loginių ryšių tarpusavyje rinkinys. Ryšių naudojate prisijungti lentelių laukus, kad jie turi bendrą. Lentelės gali būti bet koks simbolių ryšių dalis, tačiau kiekvieno ryšio visada turi tik dvi lenteles. Užklausos, sujungimo pateikiamas ryšį.

Lentelių įtraukimas į užklausą, Access sukuria sujungimai, pagrįstų ryšių, kurios buvo tarp lentelių. Galite rankiniu būdu sukurti sujungimai užklausose, net jei jie nekelia ryšius, kurios jau buvo. Jei naudojate kitus užklausų (o ne arba be lentelių) kaip duomenų šaltiniai užklausos, galite sukurti sujungimai tarp šaltinio užklausas ir tarp jų ir lentelėms, kuris naudojamas kaip duomenų šaltiniai.

Sujungimai, panašiai kaip užklausos kriterijai, nustato taisykles, kad į užklausų operacijas įtrauktini duomenys turi sutapti. Tačiau skirtingai nuo užklausos kriterijų, sujungimai nurodo, kad kiekviena eilučių pora, atitinkanti sujungimo sąlygas, sujungiama į įrašų rinkinį, kad sudarytų vieną eilutę.

Yra keturi pagrindiniai sujungimo tipai: vidinis, išorinis, kryžminis ir nelygiavertis. Šiame straipsnyje tiriamas kiekvienas galimas naudoti sujungimo tipas, kodėl jis naudojamas ir kaip jį sukurti.

Puslapio viršus

Rodomos eilutės, kurioje yra bendrų reikšmių abiejų sujungtų lentelių

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.

Vidinis sujungimas yra dažniausiai pasitaikantis sujungimo tipas. Jį naudojant užklausoje, nurodoma, kad vienos iš sujungtų lentelių eilutės atitinka kitos lentelės eilutes atsižvelgiant į sujungtų laukų duomenis. Paleidus užklausą, turinčią vidinį sujungimą, į užklausos operacijas įtraukiamos tik tos eilutės, kurių bendra reikšmė yra abiejose sujungtose lentelėse.

Kaip naudoti vidinį sujungimą?

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 nekūrėte ryšių, programa Access automatiškai sukuria vidinį sujungimą, jei į užklausą įtraukiate dvi lenteles, kuriose yra laukas, turintis tokius pačius arba suderinamo tipo duomenis, o vienas iš sujungimo laukų yra pirminis raktas. Simboliai „vienas“ ir „daugelis“ šiuo atveju nerodomi, nes nuorodų vientisumas neįgalintas.

Jei prie užklausos pridedate 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ų. Paprastai turite sukurti jį patys. Vidinis sujungimas kuriamas velkant vieno duomenų šaltinio lauką į kito duomenų šaltinio lauką. Programa Access nubrėžia liniją tarp tų dviejų laukų, parodydama, kad buvo sukurtas sujungimas.

Vidinio sujungimo SQL sintaksė

Vidinis sujungimas SQL sąlygoje FROM nurodomas taip:

FROM Lentelė1 INNER JOIN Lentelė2 ON Lentelė1. Laukas1 palyginti Lentelė2. Laukas2

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

Dalis

Aprašas

lentelė1, lentelė2

Lentelių, kurių įrašai sujungiami, 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 jie negali turėti to paties pavadinimo.

palyginimas

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

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

Puslapio viršus

Rodomos visos eilutės iš vienos lentelės ir atitinkamos eilutės iš kitos lentelės

Naudojant išorinį sujungimą nurodoma, kad užklausa turėtų įtraukti visas vienos lentelės eilutes ir bendrą reikšmę abiejose sujungimo pusėse turinčias kitos lentelės eilutes, nors kai kurios eilutės abiejose sujungimo pusėse visiškai vienodos.

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 : Galima lengvai pasakyti, kuri sujungimo lentelė yra kairioji, kuri dešinioji, dukart spustelėjus sujungimą ir peržiūrėjus dialogo langą Sujungimo ypatybės. Taip pat galite perjungti SQL rodinį ir ištirti sąlygą 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 lange Sujungimo ypatybės pažymėkite pasirinkimus, išvardytus šalia parinkčių 2 ir 3.

  3. Spustelėkite norimą naudoti parinktį, tada – 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 norite sukurti užklausą, kuri yra LEFT JOIN ir vidinio sujungimo, prieigos gali būti draudžiama nustatyti, kurios prisijungti prie operacijos atkilti pirmiausiai. Kadangi rezultatai skiriasi atsižvelgiant į tai, ar kairysis sujungimas arba vidinio sujungimo atliekama pirmą kartą, programa Access rodo klaidos pranešimą:

Norėdami išspręsti šią klaidą, keisti užklausą, kad būtų aišku, kurį sujungimą atkilti pirmiausiai.

Išorinio sujungimo SQL sintaksė

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

FROM Lentelė1 [kairėje | DEŠINIAJAME] JOIN Lentelė2
ant table1.field1 palyginti 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 sujungiami, 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.

palyginimas

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

Daugiau informacijos apie išorinio sujungimo sintaksę rasite temoje LEFT JOIN, RIGHT JOIN operacijos.

Puslapio viršus

Rodomos visos eilutės iš abiejų lentelių, ir prie jų prisijungti, jei yra bendrų reikšmių

Jei norite, kad rodomos visos eilutės iš dviejų lentelių ir prisijungti prie jų dažnai reikšmes, naudojate visam išoriniam sujungimui. Programa Access aiškiai nepalaiko visas išorinis sujungimas, tačiau galite pasiekti tą patį efektą, naudojant "union" užklausą. Ši procedūra paaiškinama, kaip tai padaryti, tačiau jei norite gauti daugiau informacijos apie "union" užklausas, rasite skyriuje Taip pat žiūrėkite .

Norėdami naudoti sujungimo užklausą visam išoriniam sujungimui įvykdyti, atlikite toliau nurodytus veiksmus.

  1. Sukurkite užklausą, kurios kairysis išorinis sujungimas yra lauke, kurį norite naudoti visam išoriniam sujungimui.

  2. Skirtuko lapo Pagrindinis grupėje Rodiniai spustelėkite Rodinys, tada spustelėkite SQL rodinys.

  3. Paspaudę CTRL+C nukopijuokite SQL kodą.

  4. Panaikinkite kabliataškį sąlygos FROM gale, tada paspauskite klavišą ENTER.

  5. Įrašykite UNION ir spauskite klavišą ENTER.

    Pastaba : Kai sujungimo užklausą naudojate visam išoriniam sujungimui įvykdyti, nenaudokite raktažodžio ALL.

  6. Paspaudę CTRL+V įklijuokite 3 žingsnyje nukopijuotą SQL kodą.

  7. Įklijuotame kode pakeiskite LEFT JOIN į RIGHT JOIN.

  8. Panaikinkite kabliataškį antrosios sąlygos FROM gale, tada paspauskite klavišą ENTER.

  9. Įtraukite sąlygą WHERE, nurodančią, kad sujungimo lauko reikšmė pirmojoje lentelėje, pateiktoje su sąlyga FROM (kairiojoje lentelėje), yra NULL.

    Pvz., jei sąlyga FROM yra:

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

    Įtrauktumėte tokią sąlygą WHERE:

    WHERE Products.ID IS NULL

  10. Sąlygos WHERE gale įveskite kabliataškį (;), taip nurodydami sujungimo užklausos pabaigą.

  11. Skirtuko Dizainas grupėje Rezultatai spustelėkite Vykdyti.

Kryžminis sujungimas

Kryžminis sujungimas skiriasi nuo vidinių ir išorinių sujungimų, kad jie nėra atskirai rodomi programoje Access. Naudojant kryžminį sujungimą, kiekvienos eilutės iš vienos lentelės kartu su kiekvienos eilutės iš kitos lentelės sudaro vadinamą kryžminį produktą arba Dekarto sandauga. Bet kuriuo metu, kai vykdote užklausą, kuri turi lenteles, kuriose aiškiai neprijungti, kryžminis produktas yra rezultatas. Kryžminis sujungimas paprastai netyčinis, bet yra atvejų, kur jie gali būti naudinga.

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ą. Pavyzdžiui, įsivaizduokite, kad jūsų verslas šiais metais įspūdingai klestėjo ir dabar galvojate grąžinti klientams permokas. 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ą. Gausite užklausą, rodančią kiekvieno kliento hipotetinį permokos grąžinimo procentų rinkinį.

Kaip naudoti kryžminį sujungimą?

Kryžminis sujungimas sukuriamas bet kada į užklausą įtraukus lenteles ar užklausas ir nesukūrus bent vieno atskiro kiekvienos lentelės ar užklausos sujungimo. Programa Access sujungia kiekvieną kiekvienos lentelės ar užklausos eilutę, kuri rezultatuose nėra atskirai sujungta su bet kurios kitos lentelės ar užklausos kiekviena kita eilute. Apsvarstykite ankstesnės pastraipos permokos grąžinimo įvykių seką. Įsivaizduokite, kad turite 91 klientą ir norite matyti penkis galimus permokos grąžinimo procentus. Jūsų kryžminis sujungimas sudaro 455 eilutes (91 ir 5 produktas).

Kaip jau supratote, naudojant kryžminį sujungimą užklausos rezultatuose gali būti sukurta daugybė eilučių. Be to, paprastai šie rezultatai yra bereikšmiai, nes jei išties neketinate kiekvienos eilutės sujungti su kiekviena kita eilute, dauguma sujungtų eilučių, rodomų rezultatuose, nieko nereikš. Galų gale užklausos, naudojančios netyčinį kryžminį sujungimą, gali trukti labai ilgai.

Netyčinis kryžminis užklausos dizaino rodinio sujungimas
Netyčinis kryžminis užklausos dizaino rodinio sujungimas.

1. Apvesti laukai turi būti sujungti vienas su kitu.

Netyčinis kryžminis produktas
Aukščiau vaizduojamas netyčinio kryžminio sujungimo grąžintas kryžminis produktas.

1. Atkreipkite dėmesį į labai didelį įrašų skaičių

Teisingas užklausos rezultatas
Rezultatai, sukūrus teisingą sujungimą.

1. Atkreipkite dėmesį į tai, kad įrašų skaičius kur kas mažesnis.

Puslapio viršus

Sujunkite lenteles, 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ą?

Dizaino rodinys nepalaiko nelygiaverčio sujungimo. Norėdami jį naudoti, turite įsijungti SQL rodinį. Tačiau galite sukurti sujungimą naudodami dizaino rodinį, perjungti SQL rodinį, rasti lyginimo operatorių lygu (=) ir pakeisti į norimą naudoti operatorių. Tai padarę, vėl atidaryti užklausą dizaino rodinyje galėsite tik po to, kai SQL rodinyje pakeisite lyginimo operatorių atgal į lygu (=).

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 DELETE.

arba

  • Užklausos kūrimo tinklelyje dešiniuoju pelės mygtuku spustelėkite norimą pašalinti sujungimą, tada – 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ų.

Taip pat žr.

Įrašų įtraukimas į lentelę naudojant papildymo užklausą

Jungimo rezultatų iš kelių užklausų žymėjimas naudojant "union" užklausos

Pagal kelių lentelių užklausos kūrimas

Kurti, redaguoti ar naikinti ryšį

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ų.

×