Združevanje tabel in poizvedb

Velja za
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ko v Accessovo poizvedbo vključite več virov podatkov, z združitvami omejite zapise, ki si jih želite ogledati, glede na to, kako so viri podatkov povezani med seboj. Združitve uporabite tudi za združevanje zapisov iz obeh virov podatkov, tako da vsak par zapisov iz virov postane en zapis v rezultatih poizvedbe.

V tem članku so opisane različne vrste združevanj, prikazani pa so tudi načini njihove uporabe v poizvedbi. Združitev je privzeto ustvarjena samodejno, če že obstaja relacija med dvema viroma podatkov, ki ju uporabite v poizvedbi. Združitev je ustvarjena tudi, če obstajajo polja, ki se med seboj jasno ujemajo. Samodejno ustvarjeno združitev lahko izbrišete. V tem članku najdete osnovne informacije o relacijah tabele, vključno s tem, kako jih ustvarite.

Opomba

Poizvedbe lahko združite na enak način kot združujete tabele, lahko pa združite obe možnosti.

V temu članku

Pregled

Zbirka podatkov je zbirka tabel podatkov, ki so med seboj logično povezani. Z relacijami povežete tabele po skupnih poljih. Tabela je lahko del poljubnega števila relacij, vendar ima vsaka relacija vedno točno dve tabeli. V poizvedbi relacijo predstavlja združevanje.

Ko v poizvedbo dodate tabele, Access ustvari združitve na osnovi relacij, določenih med tabelami. V poizvedbah lahko združitve ustvarite ročno, tudi če ne predstavljajo relacij, ki so bile že določene. Če za poizvedbo uporabljate druge poizvedbe (namesto tabel ali poleg tabel) druge poizvedbe, lahko ustvarite združitve med izvirnimi poizvedbami, pa tudi med temi poizvedbami in tabelami, ki jih uporabljate kot vire podatkov.

Združitve delujejo podobno kot pogoji poizvedbe, saj vzpostavijo pravila, ki se morajo ujemati, da so vključeni v postopke poizvedbe. Za razliko od pogojev združitve določajo tudi, da bo vsak par vrstic, ki izpolnjuje pogoje združevanja, združen v naboru zapisov v eno vrstico.

Obstajajo štiri osnovne vrste združevanj: notranja združevanja, zunanja združevanja, navzkrižna združevanja in neenaka združevanja. V tem članku so predstavljene posamezne vrste združevanj, ki jih lahko uporabite, zakaj jih uporabite in kako ustvarite združitve.

Združitve so za poizvedbe, kaj so relacije s tabelami: pokazatelj, kako lahko združite podatke iz dveh virov na podlagi skupnih vrednosti podatkov. Tukaj je slika združitve v pogledu načrta poizvedbe z lastnostmi, odprtimi v pogovornem oknu:

Polje »Lastnosti stika«

Ta črta med tabelama predstavlja združitev. Dvokliknite združitev, da odprete pogovorno okno »Lastnosti združitve « (na sliki) in preglejte ali spremenite združitev.

Združevanja so včasih usmerjena. V tem območju pogovornega okna je prikazano, katera tabela je katera v združitvi in katera polja se uporabljajo za združevanje tabel.

To območje določa vrsto združevanja: možnost 1 je notranje združevanje, 2 je levo zunanje združevanje in 3 je desno zunanje združevanje.

Uporabite lahko polja iz obeh tabel, iz vsake tabele pa so prikazani podatki, ki se nanašajo na dano opravilo. V notranji združevanju niso vključeni nobeni drugi podatki. V zunanjem združevanju so v rezultate poizvedbe vključeni tudi nepovezani zapisi iz ene tabele.

Na vrh strani

Vrste združevanj

Obstajajo štiri osnovne vrste združevanj: notranja združevanja, zunanja združevanja, navzkrižna združevanja in neenaka združevanja. Navzkrižna in neenaka združevanja sta napredni vrsti združevanja in se redko uporabljata, vendar jih morate poznati, da boste popolnoma razumeli delovanje združevanj.

Notranje združevanje je tisto, v katerem Access vključi podatke iz tabele le, če so v povezani tabeli na voljo ustrezni podatki, in obratno. V večini primerov boste uporabljali notranja združevanja. Ko ustvarite združitev in ne določite, za kakšno združevanje gre, Access predvideva, da želite notranje združevanje. Notranja združevanja so uporabna, ker omogočajo kombiniranje podatkov iz dveh virov na podlagi skupnih vrednosti, zato so podatki prikazani le, če imate celotno sliko.

Zunanje združevanje je podobno notranjemu združevanju, vendar doda preostale vrstice iz ene od tabel. Zunanja združevanja so usmerjevalna: levo zunanje združevanje vključuje vse zapise iz leve tabele – prve tabele v združevanju – desno zunanje združevanje pa vključuje vse zapise iz desne tabele – druge tabele v združitvi.

Polna zunanja združevanja: vsi podatki, združeni, kjer je to mogoče

V nekaterih sistemih lahko zunanje združevanje vključuje vse vrstice iz obeh tabel, pri čemer so vrstice združene skladno. To se imenuje polno zunanje združevanje, ki ga Access ne podpira izrecno. Lahko pa uporabite navzkrižno združevanje in pogoje, če želite doseči enak učinek.

Navzkrižna združevanja: vsi podatki, združeni na vse možne načine

V večini primerov je navzkrižno združevanje stranski učinek, ko dodate dve tabeli v poizvedbo, nato pa ju pozabite združiti. Access to razume tako, da si želite ogledati vsak zapis iz ene tabele v kombinaciji z vsakim zapisom iz druge tabele – vsako možno kombinacijo zapisov. Ker podatkov ni mogoče združiti, ta vrsta združevanja le redko ustvari uporabne rezultate. V nekaterih primerih pa je navzkrižno združevanje ravno to, kar potrebujete.

Neenake združitve: podobno kot navadno združevanje, vendar uporaba drugačne primerjave za združevanje vrstic

Neenaka združevanja uporabljajo operator, ki ni enačaj (=), za primerjavo vrednosti in določanje, ali in kako bodo podatki združeni. Neenake združitve niso izrecno podprte, lahko pa za dosego enakega učinka uporabite navzkrižno združevanje in pogoje.

Pokaži vrstice, kjer v obeh tabelah obstaja skupna vrednost

Če želite prikazati samo tiste vrstice z ujemajočimi se vrednostmi v združenem polju, uporabite notranje združevanje. Access samodejno ustvari notranja združevanja.

Notranja združevanja so najpogostejša vrsta združevanja. Sporočijo poizvedbi, da se vrstice iz ene od združenih tabel ujemajo z vrsticami v drugi tabeli, in sicer na podlagi podatkov v združenih poljih. Če zaženete poizvedbo z notranji združevanjem, bodo v operacije poizvedbe vključene le tiste vrstice s skupno vrednostjo v obeh tabelah.

Kako uporabim notranje združevanje?

V večini primerov vam za notranjo združevanje ni treba narediti ničesar. Če tabele, ki jih dodate v poizvedbo, že vključujejo relacije, Access samodejno ustvari notranja združevanja med vsakim parom povezanih tabel, ko dodate tabele. Če referenčno integriteto vsilite, Access prikaže tudi številko »1« nad združevalno črto, da vidite, katera tabela je na strani »ena« relacije »ena proti mnogo«, in znak za neskončno () za prikaz, katera tabela je na strani »mnogo«.

Tudi če relacij še niste ustvarili, Access samodejno ustvari notranja združevanja, če v poizvedbo dodate dve tabeli in vsaka od teh tabel vsebuje polje z enakim ali združljivim podatkovnim tipom, eno od združevalnih polj pa je primarni ključ. Simbola »ena« in »mnogo« v tem primeru nista prikazana, ker referenčna integriteta ni vsiljena.

Če v poizvedbo dodate poizvedbe, med njimi pa ne ustvarite relacij, Access med temi ne ustvari samodejno notranjih združevanj ali med poizvedbami in tabelami. Običajno jih ustvarite sami. Notranje združevanje ustvarite tako, da povlečete polje iz enega vira podatkov v polje v drugem viru podatkov. Access prikaže črto med dvema poljema in s tem pokaže, da je bila ustvarjena združitev.

Sintaksa SQL za notranje združevanje

Notranja združevanja so določena v jeziku SQL stavka FROM, kot je prikazano spodaj:

FROM table1 INNER JOIN table2 ON table1. field1 primerjava tabele2. polje2

Operacija INNER JOIN je sestavljena iz teh delov:

Del Opis
tabela1, tabela2 Imena tabel z zapisi, ki so združeni.
polje1, polje2 Imena polj, ki so združena. Če polja niso številčna, morajo biti istega podatkovnega tipa in imeti isto vrsto podatkov, ni jim pa treba imeti istega imena.
primerjava Kateri koli relacijski primerjalni operator: "=," "<," ">," "<=," "=," "=," or> "."<>

Če želite več informacij o sintaksi operacije INNER JOIN, glejte temo Operacija notranjega združevanja.

Na vrh strani

Prikaz vseh vrstic iz ene tabele in ustreznih vrstic iz druge tabele

Zunanja združevanja poizvedbi sporočajo, da bi morala poizvedba vključevati vse vrstice iz ene tabele in tudi tiste vrstice iz druge tabele, ki imajo skupno vrednost na obeh straneh združevanja.

Zunanja združevanja so lahko leva, zunanja združevanja ali desna zunanja združevanja. V levi zunanji stik poizvedba vključuje vse vrstice iz prve tabele v stavku SQL stavka FROM in le tiste vrstice iz druge tabele, kjer združevalno polje vsebuje vrednosti, ki so skupne obema tabelama. V desnem zunanjem združevanju poizvedba vključuje vse vrstice iz druge tabele v stavku SQL FROM in samo tiste vrstice iz druge tabele, kjer so v združevalnem polju vrednosti, ki so skupne obema tabelama.

Opomba

Zlahka lahko ugotovite, katera tabela je leva ali desna tabela v danem združevanju tako, da dvokliknete združitev in si nato ogledate pogovorno okno »Lastnosti združitve «. Lahko tudi preklopite na pogled SQL in si nato ogledate stavek FROM.

Ker nekatere vrstice na eni strani zunanjega združevanja nimajo ustreznih vrstic iz druge tabele, bodo nekatera polja, vrnjena v rezultatih poizvedbe iz te druge tabele, prazna, kadar se vrstice ne ujemajo.

Kako uporabim zunanje združevanje?

Zunanje združevanje ustvarite tako, da spremenite obstoječe notranje združevanje. Če notranje združevanje ne obstaja, ga ustvarite in ga nato spremenite v zunanje združevanje.

Spreminjanje notranjega združevanja v zunanje združevanje

  1. V pogledu načrta poizvedbe dvokliknite združitev, ki ga želite spremeniti.
    Odpre se pogovorno okno Lastnosti stika.
  2. V pogovornem oknu »Lastnosti stika « si oglejte možnosti, ki so navedene zraven možnosti 2 in 3. možnosti.
  3. Kliknite možnost, ki jo želite uporabiti, in nato V redu.
  4. Access prikaže združitev in puščico, ki kaže iz vira podatkov, kjer bodo vključene vse vrstice, do vira podatkov, kjer bodo vključene le tiste vrstice, ki izpolnjujejo pogoj združevanja.

Dvoumna zunanja združevanja

Če ustvarite poizvedbo, ki vsebuje operaciji LEFT JOIN in INNER JOIN, Access morda ne bo mogel določiti, kateri postopek združevanja naj izvede najprej. Ker se rezultati razlikujejo glede na to, ali je najprej izvedeno levo ali notranje združevanje, Access prikaže sporočilo o napaki:

Če želite popraviti to napako, morate spremeniti poizvedbo tako, da je jasno, katero združitev morate najprej izvesti.

Sintaksa SQL za zunanje združevanje

Zunanja združevanja so določena v SQL v stavku FROM, kot je prikazano spodaj:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON tabela1.polje1 primerjaj tabela2.polje2

Operaciji LEFT JOIN in RIGHT JOIN sta sestavljeni iz teh delov:

Del Opis
tabela1, tabela2 Imena tabel z zapisi, ki so združeni.
polje1, polje2 Imena polj, ki so združena. Polja morajo biti istega podatkovnega tipa in imeti isto vrsto podatkov, ni jim pa treba imeti istega imena.
primerjava Kateri koli relacijski primerjalni operator: "=," "<," ">," "<=," "=," "=," or> "."<>

Če želite več informacij o sintaksi zunanjega združevanja, glejte temo OPERACIJI LEFT JOIN, RIGHT JOIN.

Na vrh strani

Prikaže vse vrstice iz obeh tabel in jih združi tam, kjer obstaja skupna vrednost

Če želite prikazati vse vrstice iz dveh tabel in jih združiti na podlagi skupnih vrednosti, uporabite polno zunanje združevanje. Access ne podpira izrecno polnih zunanjih združevanj, vendar lahko enak učinek dosežete tudi s poizvedbo za združevanje. V tem postopku je razloženo, kako to naredite. Če pa želite več informacij o poizvedbah za združevanje, preberite razdelek »Glejte tudi «.

Če želite uporabiti poizvedbo za združevanje za izvajanje polnega zunanjega združevanja:

  1. Ustvarite poizvedbo z levim zunanjim združevanjem v polju, ki ga želite uporabiti za polno zunanje združevanje.

  2. Na zavihku Osnovno v skupini Pogledi kliknite Ogled in nato še Pogled SQL.

  3. Pritisnite CTRL+C, da kopirate kodo SQL.

  4. Izbrišite podpičje na koncu stavka FROM in pritisnite ENTER.

  5. Vnesite UNION in nato pritisnite Enter.

    Opomba

    Ne uporabite ključne besede ALL, ko uporabite poizvedbo za združevanje za izvedbo polnega zunanjega združevanja.

  6. Pritisnite kombinacijo tipk CTRL+V, da prilepite kodo SQL, ki ste jo kopirali v 3. koraku.

  7. V kodi, ki ste jo prilepili, spremenite LEFT JOIN v RIGHT JOIN.

  8. Izbrišite podpičje na koncu drugega stavka FROM in pritisnite ENTER.

  9. Dodajte stavek WHERE, ki določa, da je vrednost polja združitve NULL v prvi tabeli, navedeni v stavku FROM (leva tabela).
    Če je stavek FROM na primer:

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

    Dodali bi ta stavek WHERE:
    WHERE Products.ID IS NULL

  10. Vnesite podpičje (;) na koncu stavka WHERE, da označite konec poizvedbe za združevanje.

  11. Na zavihku Načrt v skupini Rezultati kliknite Zaženi.

Navzkrižna združevanja

Navzkrižna združevanja se od notranjih in zunanjih združevanj razlikujejo v tem, da niso izrecno predstavljena v Accessu. Pri navzkrižnem združevanju je vsaka vrstica iz ene tabele združena z vsako vrstico iz druge tabele, kar se imenuje navzkrižni produkt ali kartezični produkt. Vsakič, ko zaženete poizvedbo s tabelami, ki niso izrecno združene, je rezultat navzkrižni produkt. Navzkrižna združevanja so po navadi nenamerna, vendar so lahko v nekaterih primerih koristna.

Zakaj bi uporabil navzkrižno združevanje?

Če želite pregledati vse možne kombinacije vrstic med dvema tabelama ali poizvedbama, uporabite navzkrižno združevanje. Vaše podjetje je na primer imelo odlično leto in razmišljate o popustih za svoje stranke. Ustvarite lahko poizvedbo, v kateri so sešteti nakupi posamezne stranke, ustvarite majhno tabelo z več možnimi odstotki popustov in oba združite v drugo poizvedbo, ki izvede navzkrižno združevanje. Na koncu dobite poizvedbo, ki prikaže nabor hipotetičnih popustov za vsako stranko.

Kako uporabim navzkrižno združevanje?

Do navzkrižnega združevanja pride vsakič, ko vključite tabele ali poizvedbe v poizvedbo, in ne ustvarite vsaj enega eksplicitnega združevanja za vsako tabelo ali poizvedbo. Access združi vsako vrstico iz vsake tabele ali poizvedbe, ki ni izrecno pridružena nobeni drugi tabeli ali poizvedbi, z vsako drugo vrstico v rezultatih. Oglejte si primer popusta iz prejšnjega odstavka. Recimo, da imate 91 strank in si želite ogledati pet možnih odstotkov popustov. Navzkrižno združevanje vrne 455 vrstic (zmnožek števil 91 in 5).

Kot si morda predstavljate, lahko nenamerna navzkrižna združevanja v rezultatih poizvedbe ustvarijo ogromno vrstic. Poleg tega so ti rezultati na splošno nesmiselni, kajti če dejansko ne nameravate združiti vsake vrstice z vsako drugo vrstico, večina združenih vrstic, ki so prikazane v rezultatih, ne bo smiselna. Nazadnje, poizvedbe, ki uporabljajo nenamerna navzkrižna združevanja, lahko trajajo dlje časa.

Nenamerno navzkrižno združevanje v pogledu načrta poizvedbe 1. Obkrožena polja morajo biti medsebojno združena.

Nenamerni navzkrižni produkt 1. Bodite pozorni na zelo veliko število zapisov.

Popravljeni rezultat poizvedbe 1. Število zapisov je veliko manjše.

Na vrh strani

Združevanje tabel na podlagi neenakosti vrednosti polj

Ni treba, da združitve temeljijo na ekvivalenci združenih polj. Združevanje lahko temelji na katerem koli operatorju primerjanja, kot je večje od (>), manjše od (<) ali ni enako (<>). Združitve, ki ne temeljijo na ekvivalenci, se imenujejo neenaka združevanja.

Če želite združiti vrstice dveh virov podatkov, ki temeljijo na vrednostih polj, ki niso enake, uporabite neenako združevanje. Po navadi združevanja neenakih temeljijo na operatorjih primerjanja, ki so večje od (>), manjše od (<), večje ali enake (>=) ali manjše ali enake (<=). Neenake združitve, ki temeljijo na operatorju »ni enako (<>), lahko vrnejo skoraj toliko vrstic kot navzkrižnih združevanj, zato je rezultate težko razbrati.

Kako uporabim združevanje neenako?

Neenake združitve niso podprte v pogledu načrta. Če jih želite uporabiti, morate to narediti s pogledom SQL. Vendar pa lahko združitev ustvarite v pogledu načrta, preklopite v pogled SQL, poiščete operator primerjave »je enako« (=) in ga spremenite v operator, ki ga želite uporabiti. Ko to naredite, lahko poizvedbo v pogledu načrta znova odprete le, če najprej v pogledu SQL operatorja primerjave spremenite nazaj v enačaj (=).

Brisanje združitve

Če Access samodejno ustvari združitev, ki je ne želite, ali če združitev ustvarite pomotoma – na primer združitev med dvema poljema z različno vrsto podatkov – lahko združitev izbrišete.

  1. V mreži načrta poizvedbe kliknite združitev, ki jo želite odstraniti.
  2. Pritisnite tipko DELETE.

-ali-

  • V mreži načrta poizvedbe z desno tipko miške kliknite združitev, ki jo želite odstraniti, nato pa kliknite »Izbriši«.

Na vrh strani

Dodajanje zapisov v tabelo s poizvedbo za dodajanjeZdruževanje rezultatov več poizvedb za izbiranje s poizvedbo za združevanjeUstvarjanje poizvedbe na osnovi več tabelUstvarjanje, urejanje ali brisanje relacije