Lentelių ir užklausų sujungimas

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, kurios turi būti įtraukti į užklausos veiksmus, kuriuos turi atitikti duomenys. Skirtingai nei kriterijus, sujungimai nurodo, kad eilutes, kurios atitinka sąlygas prisijungti prie kiekvienos poros sujungiama į įrašų rinkinį, kad sudarytų vieną eilutę.

Yra keturios pagrindinės sujungimų tipai: vidiniai sujungimai, išorinis sujungimas, kryžminis ir nelygiavertis. Šiame straipsnyje analizuoja kiekvieno tipo sujungimo, kuriuos galima naudoti, kodėl galite naudoti kiekvieno tipo, 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.

Vidiniai sujungimai yra Dažniausi sujungimo tipas. Jie sako užklausą, eilučių iš vienos į sujungtų lentelių atitinka eilutes į kitą lentelę, remiantis duomenimis, kurių sujungti laukai. Paleidus užklausą su vidinio sujungimo tik tas eilutes, jei yra bendrų reikšmių yra abiejų sujungtų lentelių bus įtraukti į užklausų operacijas.

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 nesukūrėte ryšius, Access automatiškai sukuria vidinį sujungimą, jei į užklausą įtraukiate dvi lenteles ir kuriose su tuo pačiu lauku arba suderinami duomenų tipas ir iš sujungimo laukų yra pirminis raktas. Simboliai "vienas" ir "daugelis" šiuo atveju nerodomi, nes nėra būtų vykdomas nuorodų vientisumą.

Jei į užklausą įtraukti užklausos, o ne sukurti ryšius tarp tų užklausų, programa Access automatiškai nesukuria vidiniai sujungimai tarp tų užklausų ar užklausų ir lentelių. Paprastai, turite sukurti juos patys. Galite sukurti vidinį sujungimą, nuvilkus lauką iš vienos duomenų šaltinio lauko kitą duomenų šaltinį. "Access" rodo linijos tarp dviejų laukų, norėdami parodyti, kad buvo sukurtas sujungimas.

Vidinio sujungimo SQL sintaksė

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

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

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

Išoriniai sujungimai sužinoti užklausą, nors kai kurie iš abiejų pusių sujungimo eilučių tiksliai atitinka, užklausos turėtų būti visos eilutės iš vienos lentelės ir tos eilutės iš kitos lentelės, bendrai yra bendrų reikšmių sujungimo abiejose pusėse.

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 : Galite lengvai pasakyti, kuri lentelė yra kairioji lentelė arba Dešinioji lentelė nurodytą sujungimo dukart spustelėjus sujungimą ir peržiūrėjus dialogo lange Sujungimo ypatybės . 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ą.

    Bus atidarytas dialogo langas Sujungimo ypatybės.

  2. Dialogo lange Sujungimo ypatybės pažymėkite pasirinkimus išvardytus šalia parinkties 2 ir 3parinktį.

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

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 "union" užklausos visam išoriniam sujungimui vykdyti:

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

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

  3. Paspauskite CTRL + C nukopijuokite SQL kodą.

  4. Panaikinkite kabliataškį sąlygos from gale, ir paspauskite klavišą ENTER.

  5. Įveskite UNIONir paspauskite klavišą ENTER.

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

  6. Paspauskite CTRL + V, kad įklijuotumėte SQL kodą, kurį nukopijavote atlikdami 3 veiksmą.

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

  8. Panaikinkite kabliataškį pabaigoje antrosios sąlygos, ir tada paspauskite 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į (;) ir taip nurodykite „union“ 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 patikrinti kiekvieno sudėtinio eilučių tarp dviejų lentelių arba užklausų, naudoti kryžminį sujungimą. Pavyzdžiui, Tarkime, jūsų verslui turėjo šiais metais įspūdingai ir norėtumėte suteikti nuolaidų klientams. Galite sukurti užklausą, kuri susumuoja kiekvieno kliento pirkimą, sukurti mažą lentelę, kurioje yra keletas galimų grąžinimo procentų ir sujungs su kita užklausa, kuri atlieka kryžminį sujungimą. Galite baigti su užklausa, kuri rodo hipotetinių nuolaidų rinkinį kiekvieno kliento.

Kaip naudoti kryžminį sujungimą?

Kryžminis sujungimas sukuriamas bet kada, jūs savo užklausą įtraukti lenteles ar užklausas ir kurti bent vienas tiesioginis prisijungti prie kiekvienos lentelės ar užklausos. Prieigos sujungia kiekvieną eilutę iš kiekvieną lentelę arba užklausą, aiškiai neprijungta prie kitą lentelę arba užklausą, kad kas antra eilutė rezultatai. Pavyzdys, nuolaida nuo ankstesnės dalies. Tarkime, kad turite 91 klientą ir norite atkreipti dėmesį į penkių procentų galima nuolaida. Jūsų kryžminį sujungimą apskaičiuojami 455 eilutes (91 ir 5 sandauga).

Kaip suprantate, gali būti netyčinis kryžminis sujungimas galite sukurti daugybės eilutes savo užklausos rezultatuose. Be to, šie rezultatai yra paprastai prasmės, nes jei išties neketinate kiekvienos eilutės sujungti su kiekviena kita eilutė, dauguma sujungtų eilučių, rodomų rezultatuose bus prasmės. Galiausiai, užklausos, naudojančios netyčinis kryžminis sujungimas gali labai ilgai užtrukti paleisti.

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

1. Apvesti laukai turi būti sujungti tarpusavyje.

Netyčinis kryžminis produktas
Kryžminis produktas, pateikė netyčinis kryžminį sujungimą, pavaizduotas aukščiau.

1. Atkreipkite dėmesį, labai daug įrašų.

Teisingas užklausos rezultatas
Sukūrus tinkamą sujungimo rezultatus.

1. Atkreipkite dėmesį, kad įrašų skaičius yra daug 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ą?

Nelygiavertis sujungimas yra nepalaikomi dizaino rodinyje. Jei norite juos naudoti, turite tai padaryti naudojant SQL rodinys. Tačiau galite sukurti sujungimo dizaino rodinyje, perjungti SQL rodinį, rasti ir lygi (=) lyginimo operatorių, pakeiskite ją į operatorių, kurį norite naudoti. Kai tai padarysite, gali tik užklausą kaip dizaino rodinį vėl atidarysite jei jums pirmą keitimą palyginimo operatorius atgal į lygi (=) kaip SQL rodinį.

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 norimą pašalinti sujungimą, 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ų.

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

×