Spajanje podatkovnih izvora u upitu

Važno :  Ovaj je članak strojno preveden. Pogledajteizjavu o odricanju od odgovornosti. Verziju ovog članka na engleskom potražite ovdje.

Kada u upit uvrštavate više podatkovnih izvora, spojevima postavljate granice za one zapise koje želite vidjeti, a sve na temelju toga kako su podatkovni izvori međusobno povezati. Spojevi služe i za to da bi se kombinirali zapisi iz oba podatkovna izvora tako da svaki par zapisa iz izvora u rezultatima upita postaje jedan zapis.

U ovome se članku govori o raznim vrstama spojeva te se pokazuje kako koristiti spojeve u upitu.

Napomena : U ovom se članku tablica termina koristi se za znače izvora podataka. Upit možete koristiti i u spoju kao tablicu.

Pregled

Unutarnji spojevi: pokazuju retke tamo gdje postoje zajedničke vrijednosti u obje spojene tablice

Lijevi ili desni vanjski spojevi: pokazuju sve retke iz jedne tablice i odgovarajuće retke iz druge

Potpuni vanjski spojevi: pokazuju sve retke iz obje tablice te ih spajaju ako postoji zajednička vrijednost

Unakrsni spoj: sve moguće kombinacije redaka

Nejednaki spoj: spajanje zapisa na temelju nejednake vrijednosti polja

Brisanje spoja

Pregled

Spojevi su za upite ono što su odnosi za tablice: pokazatelj toga kako se podaci iz dva izvora mogu spojiti na temelju vrijednosti podataka koje su im zajedničke. Evo i ilustracije spoja u prikazu dizajna upita, sa svojstvima spoja otvorenima u dijaloškom okviru:

Okvir svojstva spoja.

Ova crta između tablica predstavlja spoja. Dvokliknite spoj da biste otvorili u dijaloškom okviru Svojstva spoja (opisane) i pregled ili promjena spoja.

Spojevi ponekad sadrže informcije o smjeru. Ovaj dio dijaloškog okvira pokazuje koja je tablica koja u spoju i pomoću kojih su polja spojene.

U ovome je podrčju određena vrsta spoja: mogućnost 1 upućuje na unutarnji spoj, 2 na lijevi vanjski spoj, a 3 desni vanjski spoj.

Mogu se koristiti polja iz obje tablice i prikazuju se podaci iz obje tablice koji su vezani uz određeni zadatak. U unutarnji spoj nisu uvršteni nikakvi drugi podaci, a u vanjskome spoju u rezultate su upita uvršteni i nepovezani zapisi iz jedne tablice.

Neki se spojevi stvaraju automatski

U mnogim slučajevima nije ni potrebno razmišljati o spojevima. Ako su tablice koje dodajete u upit već u nekom odnosu, Access stvara unutarnji spoj kojim odražava taj spoj. To je uglavnom ono što želite: način na koji se podaci iz dviju tablica ispravno spajaju tako da se uvrštavaju pravi podaci iz svake tablice i ništa više. No u nekim je slučajevima dobro stvoriti spoj kojim se obuhvaća nešto više.

Vrste spojeva

Četiri su osnovne vrste spojeva: unutarnji spojevi, vanjski spojevi, unakrsni spojevi i nejednaki spojevi. Unakrsni spojevi i nejednaki spojevi napredne su vrste spojeva koje se rijetko koriste, ali dobro je znati što su da biste u potpunosti razumjeli kako spojevi funkcioniraju.

Unutarnji spojevi: spajaju se samo međusobno povezani podaci iz obje tablice

Unutarnji spoj onaj je u kojemu Access uvrštava podatke iz tablice samo ako postoje odgovarajući podaci u povezanoj tablici i obratno. Unutarnji spoj ono je što će većina korisnika najviše koristiti. Kada stvarate spoj i ne navodite vrstu spoja, Access pretpostavlja da želite unutarnji spoj. Unutarnji su spojevi korisni jer omogućuju spajanje podataka iz dva izvora na temelju zajedničkih vrijednosti, pa vam se podaci prikazuju samo onda kada postoji potpuna slika.

Vanjski spojevi: ispravno spojeni povezani podaci i svi preostali zapisi iz jedne tablice

Vanjski je spoj isto što i unutarnji spoj, samo što uvrštava i preostale retke iz jedne od tablica. Vanjski spojevi sadrže podatke o smjeru: lijevi vanjski spoj sadrži sve zapise iz lijeve tablice (prve tablice u spoju), a desni vanjski spoj sadrži sve zapise iz desne tablice (druge tablice u spoju).

Potpuni vanjski spoj: svi podaci, spojeni ondje gdje je to moguće

U nekim sustavima vanjski se spoj sastoji od svih redaka iz obje tablice, sa spojenim recima tamo gdje odgovaraju jedni drugima. Takvo se što naziva potpuni vanjski spoj i Access takve spojeve ne podržava, no možete ih postići pomoću unakrsnog spoja i kriterija.

Unakrsni spoj: svi podaci, spojeni na sve moguće načine

Unakrsni je spoj najčešće nuspojava dodavanja dviju tablica u upit i zaboravljanja provođenja spoja na njima. Access to tumači tako da želite vidjeti sve zapise iz jedne tablice spojene sa svim zapisima iz druge tablice, odnosno sve moguće kombinacije zapisa. Zbog nemogućnosti spajanja i kombiniranja svih podataka, ovakva vrsta spoja rijetko kada daje korisne rezultate, no postoji nekoliko slučajeva u kojima je unakrsni spoj baš ono što vam je potrebno.

Nejednaki spojevi: nalik običnim spojevima, ali uz drugačiju usporedbu pri spajanju redaka

Nejednaki se spojevi koriste operatorima koji nisu znak jednakosti (=) da bi usporedili vrijednosti i odredili mogu li se i kako se mogu spojiti podaci. Nejednaki spojevi nisu striktno podržani, ali moguće ih je provesti kroz unakrsne spojeve s kriterijem.

Vrh stranice

Unutarnji spojevi: pokazuju retke tamo gdje postoje zajedničke vrijednosti u obje spojene tablice

Ako u spojenom polju želite prikazati samo one retke kojima se vrijednosti podudaraju, poslužit ćete se unutarnjim spojem. Access automatski stvara unutarnje spojeve.

Unutarnji spojevi najčešća su vrsta spoja. Oni govore upitu da reci s jedne spojene tablice odgovaraju recima u drugoj tablici na temelju zajedničkih vrijednosti u spojnim poljima. Kada se pokrene upit s unutarnjim spojem, samo oni reci gdje zajednička vrijednost postoji u obje spojene tablice bit će uključeni u operacije upita.

Kako se koristi unutarnji spoj?

Da biste stvorili unutarnji spoj, povucite polje iz jednoga podatkovnog izvora na polje u drugome podatkovnom izvoru u rešetki dizajna upita. Access će spojiti dvije tablice u poljima i prikazati crtu između njih.

Automatski unutarnji spojevi

Najčešće nije potrebno učiniti ništa da biste dobili unutarnji spoj. Ako su tablice koje dodajete u upit već u nekom odnosu, Acces automatski stvara unutarnji spoj između parova međusobno povezanih tablica kada ih dodate u upit. Ako se primjenjuje referencijalna cjelovitost Access prikazuje "1" iznad crte spajanja da bi pokazao koja je tablice na strani "jednoga" u odnosu odnos preslikavanja jednog člana na više njih te znak beskonačnosti () da bi pokazala koja je tablica na strani "više".

Čak i ako niste stvorili odnose, Access automatski stvara unutarnje spojeve ako dodate dvije tablice u upit, a te tablice obje imaju polje istoga naziva i s istom ili odgovarajućom vrstom podataka ako je jedno od tih polja primarni ključ za vlastitu tablicu. U ovom slučaju simboli "jedan" i "više" nisu prikazani jer nije nametnut referencijalni integritet.

Ako u svoj upit dodate upite, a niste stvorili odnos između tih upita, Access ne stvara automatski unutarnje spojeve između tih upita ili između upita i tablica. Uglavnom biste ih trebali stvoriti sami (povlačenjem polja iz jednoga podatkovnog izvora na polje u drugome). Ako to ne učinite, mogli biste dobiti unakrsni spoj, a takvi su rezultati, kada ih ne želite, vrlo zbunjujući.

SQL sintaksa za unutarnji spoj

Unutarnji spojevi u SQL kodu određeni su klauzulom FROM, kao što se vidi ispod:

FROM tablica1 INNER JOIN tablica2 ON tablica1.polje1opersp tablica2.polje2

Operacija INNER JOIN sastoji se od sljedećih dijelova:

Dio

Opis

tablica1, tablica2

Nazivi tablica iz kojih se spajaju zapisi.

polje1, polje2

Nazivi spojenih polja. Ako nisu numerička, polja moraju biti iste vrsta podatka i sadržavati istovrsne podatke, ali ne moraju imati isti naziv.

operatorusporedbe

Bilo koji relacijski operator usporedbe: "=," "<," ">," "<=," ">=," ili "<>."

Dodatne informacije u sintaksi unutarnjeg spoja: Operacija INNER JOIN.

Vrh stranice

Lijevi ili desni vanjski spojevi: pokazuju sve retke iz jedne tablice i odgovarajuće retke iz druge

Vanjski spojevi govore upitu da bi, iako neki reci na obje strane spoja točno odgovaraju, trebao uključiti sve retke iz jedne tablice i također one retke iz druge tablice koji dijele zajedničku vrijednost na obje strane spoja (spajajući podatke ondje gdje obje tablice obuhvaćaju redak).

Vanjski spojevi mogu biti lijevi vanjski spojevi i desni vanjski spojevi. U lijevom vanjskom spoju upit uključuje sve retke iz prve tablice u SQL naredbi s klauzulom FROM i samo one retke iz druge tablice gdje spojno polje sadrži vrijednosti zajedničke objema tablicama. U desnom vanjskom spoju upit uključuje sve retke iz druge tablice u SQL naredbi s klauzulom FROM i samo one retke iz preostale tablice gdje spojno polje sadrži vrijednosti zajedničke objema tablicama.

Napomena : Možete jednostavno prepoznati koja je tablica lijeva tablica ili desna tablica u zadanom spoju tako da dvokliknete spoj, a zatim pogledate na dijaloškom okviru Svojstva spoja . Ili u SQL prikazu možete provjeriti uvjetu FROM detalje spoja.

Zbog toga što reci na jednoj strani vanjskog spoja neće imati odgovarajuće retke iz druge tablice, neka polja vraćena u rezultatima upita bit će prazna kad reci ne odgovaraju.

Kako se koristi vanjski spoj?

Vanjski se spoj može stvoriti preinakom postojećeg unutarnjeg spoja. Ako nema unutarnjih spojeva, dovoljno ga je stvoriti pa zatim promijeniti u vanjski.

Promjena unutarnjeg spoja u vanjski spoj

  1. U prikazu dizajna dvostruko pritisnite spoj koji želite promijeniti.

    Na pojavit će se dijaloški okvir Svojstva spoja .

  2. U na dijaloški okvir Svojstva spoja , bilješke na odabire popisane pokraj mogućnosti 2 i mogućnosti 3.

  3. Kliknite mogućnost koju želite koristiti, a zatim kliknite u redu.

  4. Access prikazuje spoj i pokazuje strelicu koja pokazuje od izvora podataka gdje će se uključiti svi reci prema izvoru podataka gdje će se uključiti samo oni reci koji zadovoljavaju uvjet spoja.

Dvosmisleni vanjski spojevi

Ako stvorite upit koji sadrži naredbu LEFT JOIN i INNER JOIN, Access možda neće moći utvrditi koju je operaciju potrebno obaviti prvu. Zbog toga što su rezultati drugačiji ovisno o tome provodi li se prvo lijevi ili unutarnji spoj, Access će prikazati poruku o pogrešci vezanu uz dvosmislene vanjske spojeve.

Da biste ispravili tu pogrešku, promijenite upit tako da bude jasno koji je spoj prvi na redu.

Vanjski spojevi i ažuriranje upita

U aplikaciji Access polje upita za veći broj tablica može se ažurirati samo ako su ispunjeni sljedeći uvjeti:

  • polje potječe iz tablice "većina-mnoštvo" u upitu – tablice koja traži podatke u drugoj tablici

  • upitom je obuhvaćen primarni ključ iz tablice "većina-mnoštvo"

  • ako je tablica "većina-mnoštvo" dio vanjskoga spoja, nalazi se s unutarnje strane spoja, kao lijeva tablica lijevoga vanjskoga spoja ili desna tablica desnoga vanjskog spoja

Ako nije ispunjen bilo koji od tih uvjeta, polje će biti samo za čitanje, bez obzira je li u podatkovnoj tablici upita ili u prikazu utemeljenom na upitu.

SQL sintaksa za vanjski spoj

Vanjski spojevi u SQL-u određeni su klauzulom FROM, kao što se vidi ispod:

FROM tablica1 [ LEFT | RIGHT ] JOIN tablica2
ON tablica1.polje1opersp tablica2.polje2

Operacije LEFT JOIN i RIGHT JOIN sastoje se od sljedećih dijelova:

Dio

Opis

tablica1, tablica2

Nazivi tablica iz kojih se spajaju zapisi.

polje1, polje2

Nazivi spojenih polja. Polja moraju biti iste vrsta podatka i sadržavati istovrsne podatke, ali ne moraju imati isti naziv.

operatorusporedbe

Bilo koji relacijski operator usporedbe: "=," "<," ">," "<=," ">=," ili "<>."

Dodatne informacije u sintaksi vanjskog spoja: Operacije LEFT JOIN, RIGHT JOIN.

Vrh stranice

Potpuni vanjski spojevi: pokazuju sve retke iz obje tablice te ih spajaju ako postoji zajednička vrijednost

Kada želite da vam se prikažu svi reci iz dviju tablica i kada ih želite spojiti na temelju zajedničkih vrijednosti, poslužite se mogućnošću potpunog vanjskog spoja. Access striktno ne podržava potpuni vanjski spoj, ali ga je moguće postići pomoću unakrsnog spoja s kriterijem.

  1. Stvorite upit i dodajte dvije tablice. Ako Access stvori spojeve, izbrišite ih.

  2. Dodajte sva polja koja želite u rezultatu upita.

  3. Dodajte spojena polja iz obiju tablica i poništite potvrdni okvir u retku Pokaži za njih.

  4. U rešetci dizajna upita, ispod spojnog polja prve tablice unesite spojno polje druge tablice u redak Kriterij. Ako spojna polja imaju isti naziv, svakako navedite naziv tablice kada se referirate na njih.

  5. U redak Or, ispod kriterija koji ste upravo unijeli upišite Is Null.

  6. U sljedeći redak Or (točno ispod prvoga), ispod spojnog polja prve tablice upišite Is Null.

Upit će vratiti spojeni skup:

  • redaka u kojima se spojene vrijednosti polja podudaraju i podaci su spojeni prema tome (u praksi, unutarnji spoj)

  • redaka u kojima nema vrijednosti spojenih polja u prvoj tablici (u praksi, vanjski dio lijevoga vanjskog spoja)

  • redaka u kojima nema vrijednosti za spojena polja u drugoj tablici (u praksi, vanjski dio desnoga vanjskog spoja)

Vrh stranice

Unakrsni spoj: sve moguće kombinacije redaka

Do unakrsnoga spoja dolazi svaki put kada uvrstite tablice u upit, a ne spojite ih. Acces spaja svaki redak iz jedne stablice sa svakim retkom druge tablice, a rezultat je unakrsni produkt ili Kartezijanski produkt. Takvo što najčešće ne želimo, ali unakrsni spojevi mogu biti korisni za istraživanje hipotetskih situacija.

Zašto se koristi unakrsni spoj?

Želite li istražiti svaku moguću kombinaciju redaka dviju tablica ili upita, koristite unakrsni spoj. Recimo da je vaša tvrtka imala fantastično uspješnu godinu pa razmišljate o tome da kupcima ponudite popust. Možete izgraditi upit koji zbraja kupnje svakog klijenta, stvoriti malu tablicu koja ima nekoliko mogućih postotaka popusta i kombinirati dvoje u drugom upitu koji izvodi unakrsni upit. Unakrsni produkt prikazuje skup hipotetskih popusta za svakoga kupca, a to je upravo ono što ste željeli.

Kako se koristi unakrsni spoj?

Dodajte dvije tablice u upit, među njima nemojte stvoriti spoj i uvrstite polja iz oba rezultata upita. Access kombinira svaki redak iz svake tablice ili upita, koji nije eksplicitno spojen s bilo kojom drugom tablicom ili upitom, sa svim recima u rezultatima upita. Primijenite to na primjer s popustima iz prethodnog odlomka. Pretpostavite da imate 91 klijenta i želite vidjeti pet mogućih postotaka popusta. Unakrsnim spojem dobiva se 455 redaka (umnožak/produkt 91 i 5).

Ako su tablice koje ste dodali međusobno povezane, Access će automatski stvoriti unutarnji spoj. Ta automatski spoj možete izbrisati da biste stvorili unakrsni spoj.

Vjerojatno ste i sami pretpostavili da slučajni unakrsni spojevi mogu stvoriti veliki broj redaka u rezultatima upita. Ti su rezultati, osim toga, najčešće besmisleni jer se reci ne spajau na temelju zajedničkih podataka i kombinacije nisu vezane ni uz što.

Vrh stranice

Nejednaki spoj: spajanje zapisa na temelju nejednake vrijednosti polja

Spojevi ne moraju biti temeljeni na jednakosti spojnih polja. Spoj se može temeljiti na bilo kojem operatoru uspoređivanja, kao što su veće od (>), manje od (<) ili nije jednako (<>). Spojevi koji se ne temelje na jednakosti nazivaju se nejednaki spojevi.

Želite li kombinirati retke dvaju izvora podataka na temelju vrijednosti polja koje nisu jednake, koristite nejednaki spoj. U pravilu nejednaki spojevi temelje se na operatorima uspoređivanja ili veće od (>), manje od (<), veće od ili jednako (>=) ili manje od ili jednako (<=). Nejednaki spojevi koji se temelje na operatoru nije jednako (<>) mogu vratiti skoro onoliko redaka kao i unakrsni spojevi, a rezultat se teško može interpretirati.

Kako se koristi nejednaki spoj?

Access striktno ne podržava nejednake spojeve u prikazu dizajna, ali ih je moguće postići pomoću unakrsnog spoja s kriterijem:

  1. Stvorite upit i dodajte dvije tablice za nejednaki spoj. Ako Access automatski stvori spojeve, izbrišite ih.

  2. Dodajte željena izlazna polja.

  3. Dodajte spojena polja iz prve tablice i poništite potvrdni okvir u retku Pokaži.

  4. U redak Kriterij upišite operator nejednakosti koji želite koristiti pa spojno polje druge tablice.

Upit vraća retke u kojima se spajaju podaci iz dviju tablica na temelju nejednakosti koju ste naveli.

Vrh stranice

Brisanje spoja

Ako Access automatski stvori spoj koji ne želite ili ako zbog pogreške stvorite neki spoj — primjerice, između dva polja koja imaju različite vrste podataka — te spojeve možete i izbrisati.

  1. U rešeci dizajna upita kliknite spoj koji želite ukloniti.

  2. Pritisnite Brisanje.

– ili –

  • U rešetki dizajna upita desnom tipkom miša kliknite spoj koji želite ukloniti, a zatim kliknite Brisanje.

Vrh stranice

Napomena : Izjava o odricanju od odgovornosti za strojni prijevod: ovaj je članak preveo računalni sustav bez ljudske intervencije. Microsoft nudi strojne prijevode da bi korisnicima koji ne razumiju engleski omogućio čitanje sadržaja o Microsoftovim proizvodima, uslugama i tehnologijama. Budući da je preveden strojno, članak možda sadrži pogreške u vokabularu, sintaksi ili gramatici.

Proširite svoje vještine
Istražite osposobljavanje

Jesu li vam ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×