Spajanje tablica i upita

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

Kada uključite više izvora podataka u upitu programa Access, koristite spojeve da biste ograničili zapise koje želite vidjeti, na temelju kakvom izvore podataka u jedan drugome. I koristite spojeva za spajanje zapisa iz oba izvora podataka, tako da svaki par zapise iz izvora postaje jedan zapis u rezultatima upita.

U ovom se članku govori o raznim vrstama spojeva te se pokazuje kako koristiti spojeve u upitu. Prema zadanim postavkama spoj automatski se stvara postoji li već odnos između dvije izvore koji koriste u upitu. Spoj se stvara i ako postoje polja koja jasno odgovaraju međusobno povezani. Možete izbrisati automatski stvoreni spoja. Ovaj članak sadrži osnovne informacije o odnosima između tablica, uključujući i kako ga stvoriti.

Napomena : Možete se uključiti upita na isti način spajanje tablica, a možete pridružiti oboje.

Sadržaj članka

Pregled

Vrste spojeva

Pokazuju retke tamo gdje postoje zajedničke vrijednosti u obje spojene tablice

Prikaži sve retke iz jedne tablice i odgovarajuće retke iz druge tablice

Prikaži sve retke iz obje tablice i uključiti ih tamo gdje postoje zajedničke vrijednosti

Unakrsni spojevi

Spajanje tablice na temelju nejednake vrijednosti polja

Brisanje spoja

Pregled

Baza podataka nije zbirka tablica s podacima koji nose logičke odnose jedni s drugima. Povezivanje tablica, polja koja imaju zajedničke pomoću odnosa. Tablice mogu biti dio proizvoljan broj odnosa, no svaki odnos uvijek ima točno dvije tablice. U upitu, odnosa predstavlja spoja.

Kada dodate tablice u upit, Access stvara spojevi koji se temelje na odnosa koji su definirani između tablica. Ručno možete stvarati spojeve u upitima, čak i ako ne predstavlja odnosa koji su već definirani. Ako koristite druge upite (umjesto ili uz tablice) kao izvor podataka za upit, možete stvarati spojeve između izvornih upita, a i između tih upita i sve tablice koje koristite kao izvor podataka.

Spojevi se ponašaju slično kao kriterija upita u tom se uspostaviti pravila koja se podaci moraju podudarati da bi bio uvršten u operacije upita. Za razliku od kriterija, spojevi odrediti da se svaki par retke koji zadovoljavaju uvjete spoja kombinirati u skupu zapisa za jedan redak.

Postoje četiri osnovne vrste spojeva: Unutarnji spojevi, vanjski spojevi, unakrsni spojevi i Nejednaki spojevi. U ovom se članku istražuje svaku vrstu spoja možete koristiti, zašto se koristi svaku vrstu i kako stvoriti spojeva.

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.

Vrh stranice

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.

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 su najčešća vrsta spoja. Oni govore upitu da reci s jedne spojene tablice odgovaraju recima u drugoj tablici, na temelju podataka u spojena polja. Kada se upit s unutarnji spoj, samo retke tamo gdje postoje zajedničke vrijednosti u obje spojene tablice obuhvaćene operacije upita.

Kako se koristi unutarnji spoj?

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 Unutarnji spojevi ako dodate dvije tablice u upit i te tablice obje imaju polje s istom ili kompatibilnu vrstu podatka i od spojena polja je primarni ključ. Simboli "jedan" i "više" ne prikazuju se u tom slučaju jer ne nameće referencijalni integritet.

Ako dodate upite u upit, a niste stvorili odnose između tih upita, Access stvara automatski Unutarnji spojevi između tih upita ili između upita i tablica. Općenito govoreći, trebali biste ih stvarate sami. Unutarnji spoj stvorite povlačenjem polja iz jednog izvora podataka u polje drugog izvora podataka. Access prikazuje crte između dva polja da biste prikazali spoj je stvorena.

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

Usporedba

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

Dodatne informacije o sintaksi unutarnjeg spoja potražite u temi Operacija INNER JOIN.

Vrh stranice

Prikaži sve retke iz jedne tablice i odgovarajuće retke iz druge tablice

Vanjski spojevi govore upitu da iako neke retke s obje strane spoja točno odgovaraju, trebao uključiti sve retke iz jedne tablice i retke iz druge tablice zajedničko korištenje zajedničke vrijednosti s obje strane spoja.

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 u dijaloškom okviru Svojstva spoja . Možete se prebaciti u SQL prikaz, a zatim provjerite uvjetu FROM.

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.

    Prikazuje se dijaloški okvir Svojstva spoja.

  2. U dijaloškom okviru Svojstva spoja obratite pažnju na odabire popisane pokraj mogućnosti 2 i mogućnosti 3.

  3. Kliknite željenu mogućnost pa 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 LEFT JOIN i UNUTARNJI SPOJ, Access možda nećete moći da biste utvrdili koji uključivanje operacija prvi. Budući da rezultate razlikuju se ovisno o tome lijevi spoj ili unutarnji spoj provodi najprije, Access prikazuje poruku o pogrešci:

Da biste ispravili tu pogrešku, morate promijeniti upit tako da bude jasno koji spoj prvi.

SQL sintaksa za vanjski spoj

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

FROM tablica1 [lijevo | DESNI] JOIN tablica2
na Tablica1.polje1 Usporedba tablica2.polje2

Operacije LEFT JOIN i RIGHT JOIN imaju sljedeće dijelove:

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.

Usporedba

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

Dodatne informacije o sintaksi vanjskog spoja potražite u temi LEFT JOIN, operacija SPAJANJA desno.

Vrh stranice

Prikaži sve retke iz obje tablice i uključiti ih tamo gdje postoje zajedničke vrijednosti

Kada želite da vam pokazuju sve retke iz dviju tablica i pridružiti im uobičajenih vrijednosti na temelju pomoću potpunog vanjskog spoja. Access ne podržava izričito potpuni vanjski spojevi, ali isti učinak možete postići pomoću upita s unijom. Sljedeći postupak objašnjava kako to učiniti, ali ako želite dodatne informacije o upitima s unijom, potražite u odjeljku Vidi također .

Korištenje upita s unijom za izvođenje potpunog vanjskog spoja:

  1. U polju koje želite koristiti za potpuni vanjski spoj stvorite upit s lijevim vanjskim spojem.

  2. Na kartici Polazno u grupi Prikazi kliknite Prikaz, a zatim SQL prikaz.

  3. Pritisnite CTRL + C da biste kopirali SQL kod.

  4. Izbrišite točku sa zarezom na kraju uvjeta FROM, a zatim pritisnite tipku ENTER.

  5. Upišite UNION, a zatim pritisnite Enter.

    Napomena : Ako za izvođenje potpunog vanjskog spoja koristite upit s unijom, ne koristite ključnu riječ ALL.

  6. Pritisnite CTRL + V da biste zalijepili SQL kod koji ste kopirali u trećem 3.

  7. U kodu koji ste zalijepili operaciju LEFT JOIN promijenite u RIGHT JOIN.

  8. Izbrišite točku sa zarezom na kraju drugog uvjeta FROM, a zatim pritisnite tipku ENTER.

  9. Dodajte uvjet WHERE koji određuje da će vrijednost polja spoja u prvoj tablici navedenoj u uvjetu FROM (lijeva tablica) biti NULL.

    Kada bi, primjerice, uvjet FROM bio sljedeći:

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

    Dodali biste sljedeći uvjet WHERE:

    WHERE Products.ID IS NULL

  10. Na kraju uvjeta WHERE upišite točku sa zarezom (;) da biste označili kraj upita s unijom.

  11. Na kartici Dizajn u grupi Rezultati kliknite Izvedi.

Unakrsni spojevi

Unakrsni spojevi razlikuju se od unutarnjih i vanjskih spojeva u koje se nisu eksplicitno predstavljeni u Access. U unakrsni spoj svakog retka iz jedne tablice kombiniraju se sa svakim retkom iz druge tablice, što se naziva i unakrsni umnožak ili Kartezijev umnožak. Svaki put kad pokrenete upit koji se sastoji od tablica koje nisu eksplicitno spojene, unakrsni umnožak je rezultat. Unakrsni spojevi najčešće su slučajni, ali postoje slučajevi u kojima zna biti korisno.

Zašto se koristi unakrsni spoj?

Ako želite da biste pregledali sve moguće kombinacije redaka između dvije tablice ili upita, koristi unakrsni spoj. Ako, na primjer, pretpostavimo da vaša tvrtka ima imali bila iznimno uspješna godine i razmišljate završavate klijentima. Možete izraditi 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 spoj. Završavanje pomoću upita koji prikazuje skup hipotetska završavate za svakog korisnika.

Kako se koristi unakrsni spoj?

Unakrsni spoj je sastavio svaki put kada uključiti tablica ili upita u upit i ne stvorite barem jedan eksplicitnih spoj za svaku tablicu ili upit. Access kombinira svaki redak u svaku tablicu ili upit koji nisu eksplicitno spojene bilo koju tablicu ili upit za svaki drugi redak u rezultatima. Razmislite o Zamislite scenarij iz prethodnog odlomka. Pretpostavimo da imate 91 klijenta i želite pogledati pet mogućih postotaka popusta. Unakrsni spoj proizvodi 455 redaka (umnožak od 91 i 5).

Kao što je možda zamislite slučajni unakrsni spojevi mogu stvoriti veliki broj redaka u rezultatima upita. Nadalje, te rezultate Općenito su besmisleni jer ako zapravo nemate namjeru kombinirati svaki redak sa svakog drugog retka, većina kombiniranih redaka koji se pojavljuju u rezultatima neće imati smisla. Na kraju, upiti koji koriste slučajni unakrsni spojevi može potrajati vrlo dugo vrijeme pokretanje.

slučajni unakrsni spoj u prikazu dizajna upita
Slučajni unakrsni spoj u prikazu dizajna upita.

1. na zaokružena polja trebala bi biti spojena jedni s drugima.

Slučajni unakrsni umnožak
Unakrsni umnožak Vraća slučajni unakrsni spoj opisane iznad.

1. Imajte na umu velikog broja zapisa.

rezultat ispravnog upita
Rezultati nakon što je stvoren ispravan spoj.

1. Imajte na umu da je puno manji broj zapisa.

Vrh stranice

Spajanje tablice 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?

Nejednaki spojevi nisu podržane u prikazu dizajna. Ako želite da ih koristite, to morate učiniti pomoću SQL prikaz. Međutim, možete stvoriti spoj u prikazu dizajna, prijeći u SQL prikaz, pronaći jednako operator usporedbe (=) i promjena ga u operator koji želite koristiti. Kada to učinite, možete samo otvoriti upit u prikazu dizajna ponovno ako ste prvu promjenu operator usporedbe natrag u jednako (=) u SQL prikazu.

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

– ili –

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

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.

Dodatni sadržaji

Dodavanje zapisa u tablicu pomoću upita s dodavanjem

Spajanje rezultata nekoliko odabiranja pomoću upita s unijom

Stvaranje upita na temelju više tablica

Stvaranje, uređivanje i brisanje odnosa

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.

×