Spajanje tabela i upita

Važno : Ovaj članak je mašinski preveden, pogledajte odricanje odgovornosti. Pogledajte verziju ovog članka na engleskom jeziku ovde za referencu.

Kada uključite više izvora podataka u Access upitu, koristite spojevi da biste ograničili zapise koje želite da vidite, na osnovu kako izvori podataka su međusobno. Možete takođe da koristite spojeve Kombinuje zapise iz obe izvora podataka, tako da svaki par zapisa izvore postaje jedan zapis u rezultatima upita.

Ovaj članak govori o različitim tipovima spojeva i pokazuje kako da ih koristite u upitu. Podrazumevano spoja se automatski kreira ako već postoji relacije između dve podataka izvora koje koristite u upitu. Je spoj kreira ako postoje polja koja jasno međusobno. Možete da izbrišete automatski kreirano spoja. Ovaj članak pruža osnovne informacije o relacijama između tabela, uključujući i kako da ga kreirate.

Napomena : Možete da se pridružite upite na isti način na koji spajanje tabela i se možete pridružiti oba.

U ovom članku

Pregled

Prikazuje redove u kojima zajednička vrednost postoji u obe pridružene tabele

Prikazuje sve redove iz jedne tabele i odgovarajuće redove iz druge tabele

Prikazuje sve redove iz obe tabele i pridruživanje njima kojima zajednička vrednost postoji

Unakrsni spojevi

Spojite tabele na osnovu nejednakih vrednosti polja

Brisanje spoja

Pregled

Baza podataka je kolekcija tabele sa podacima koje logičke relacije. Koristite veze za povezivanje tabele po poljima koja su im zajedničke. Tabele mogu biti deo bilo koji broj veza, ali svaki odnos uvek ima tačno dve tabele. U upitu, relacije predstavljena je spoja.

Kada dodajete tabele u upit, Pristup kreira spojevi koji su zasnovani na veze koje su definisane između tabela. Ručno kreirate spojeva u upitima, čak i ako ne predstavljaju relacije koje su već definisane. Ako koristite druge upite (umesto ili pored tabele) kao izvore podataka za upit, možete kreirati spojeve između izvornih upita, kao i između ovih upita i sve tabele koje koristite kao izvore podataka.

Spojevi se ponašaju slično kao kriterijumi upita pošto definišu pravila koja podaci moraju da zadovolje kako bi bili obuhvaćeni operacijama upita. Za razliku od kriterijuma, spojevi takođe određuju da će svaki par redova koji zadovoljava uslove spoja biti pridružen grupi zapisa kako bi se formirao jedan red.

Postoje četiri osnovna tipa spojeva: unutrašnji spojevi, spoljni spojevi, unakrsni spojevi i uporedni spojevi. Ovaj članak sadrži objašnjenja o svakom tipu spoja koji možete da koristite, o razlozima korišćenja određenog tipa, kao i o načinu kreiranja spojeva.

Vrh stranice

Prikazuje redove u kojima zajednička vrednost postoji u obe pridružene tabele

Ako želite da pokažete samo one redove koji imaju podudarne vrednosti u povezanom polju, koristite unutrašnji spoj. Access automatski kreira unutrašnji spoj.

Unutrašnji spojevi predstavljaju najčešći tip spoja. Oni govore upitu da redovi iz jedne od spojenih tabela odgovaraju redovima u drugoj tabeli, na osnovu podataka u spojenim poljima. Kada se pokrene upit sa unutrašnjim spojem, u operacijama upita će biti obuhvaćeni samo oni redovi u kojima zajednička vrednost postoji u obe spojene tabele.

Kako koristiti unutrašnji spoj?

Uglavnom nema potrebe da bilo šta radite da biste koristili unutrašnji spoj. Ako tabele koje dodajete u upit već imaju relacije, Access automatski kreira unutrašnji spoj između svih parova povezanih tabela kada dodate tabele. Ako je nametnut referencijalni integritet, Access takođe prikazuje broj „1“ iznad linije spajanja da bi pokazao koja se tabela nalazi na strani „jedan“ odnos jedan-prema-više i simbol za beskonačno () da bi pokazao koja se tabela nalazi na strani „više“.

Čak i ako niste kreirali relacije, Access će automatski kreirati unutrašnje spojeve ako u upit dodate dve tabele i svaka od njih ima polje sa istim ili kompatibilnim tipom podataka, a jedno od spojenih polja je primarni ključ. Simboli „jedan" i „više" se neće prikazati u ovom slučaju, jer referencijalni integritet nije primenjen.

Ako dodate upite u upit, a niste kreirali relacije između ovih upita, Access neće automatski kreirati unutrašnje spojeve između njih, kao ni između upita i tabela. Uopšte uzev, treba sami da ih kreirate. Unutrašnji spoj možete kreirati prevlačenjem polja iz jednog izvora podataka u polje u drugom izvoru podataka. Access će prikazati liniju između dva polja da bi označio da je spoj kreiran.

SQL sintaksa za unutrašnji spoj

Unutrašnji spojevi su u SQL sintaksi navedeni pomoću odredbe FROM, kao što je prikazano niže:

OD 1 INNER JOIN tabela2 ON tabela1. polje1 poređenje tabela2. polje2

Operacija INNER JOIN sadrži sledeće delove:

Deo

Opis

tabela1, tabela2

Imena tabela iz kojih potiču zapisi za kombinovanje.

polje1, polje2

Imena polja koja su spojena. Ako ona nisu numerička, polja moraju imati isti tip podatka i moraju da sadrže istu vrstu podataka, ali ne moraju imati isto ime.

Poređenje

Bilo koji relacioni operator za upoređivanje: "=," "<," ">," "<=," ">=," ili "<>."

Više informacija o sintaksi unutrašnjeg spoja potražite u temi operacija INNER JOIN.

Vrh stranice

Prikazuje sve redove iz jedne tabele i odgovarajuće redove iz druge tabele

Spoljni spojevi govore upitu da iako se neki redovi na obe strane spoja u potpunosti podudaraju, upit treba da obuhvati sve redove iz jedne tabele i one redove iz druge tabele koji imaju zajedničku vrednost na obe strane spoja.

Spoljni spojevi mogu biti levi spoljni spojevi ili desni spoljni spojevi. U levom spoljnjem spoju, upit obuhvata sve redove iz prve tabele u odredbi FROM SQL naredbe i samo one redove iz druge tabele u kojima polje spajanja sadrži vrednosti zajedničke za obe tabele. U desnom spoljnjem spoju upit uključuje sve redove iz druge tabele u odredbi FROM SQL naredbe i samo one redove iz prve tabele u kojima polje spoja sadrži vrednosti zajedničke za obe tabele.

Napomena : Na jednostavan način možete da odredite koja tabela je leva, a koja desna u određenom spoju tako što ćete dvaput kliknuti na spoj, a zatim pogledati u dijalog Svojstva spoja. Možete se takođe prebaciti na SQL prikaz, a zatim ispitati odredbu FROM.

Pošto neki redovi na jednoj strani spoljnjeg spoja neće imati podudarne redove u drugoj tabeli, neka polja vraćena u rezultatima upita iz te druge tabele biće prazna na mestima na kojima redovi nisu podudarni.

Kako koristiti spoljni spoj?

Spoljni spoj kreirate tako što promenite postojeći unutrašnji spoj. Ako nemate unutrašnji spoj, kreirajte ga, a zatim ga promenite u spoljni spoj.

Menjanje unutrašnjeg spoja u spoljni spoj

  1. U prikazu dizajna upita dvaput kliknite na spoj koji želite da promenite.

    Pojaviće se dijalog Svojstva spoja.

  2. U dijalogu Svojstva spoja obratite pažnju na ponuđene stavke pored opcije 2 i opcije 3.

  3. Izaberite opciju koju želite da koristite, a zatim kliknite na dugme U redu.

  4. Access će prikazati spoj i strelicu koja je usmerena od izvora podataka iz koga će svi redovi biti uključeni prema izvoru podataka iz koga će biti uključeni samo oni redovi koji zadovoljavaju uslov spoja.

Nejasni spoljni spojevi

Ako kreirate upit koji sadrži LEFT JOIN i UNUTRAŠNJI spoj, Access možda nećete moći da biste utvrdili koja se pridružite operacija prvo da se izvrši. Pošto rezultati se razlikuju u zavisnosti od toga da li levi spoj ili unutrašnji spoj vrši se prvi put, Access prikazuje poruku o grešci:

Da biste ispravili ovu grešku, morate da promenite upit tako da bude jasno koje spajanje prvo da se izvrši.

SQL sintaksa za spoljni spoj

Spoljni spojevi su navedeni u SQL sintaksi pomoću odredbe FROM, kao što je prikazano niže:

IZ tabela1 [levo | RIGHT] JOIN tabela2
na table1.field1 poređenje tabela2.polje2

Operacije LEFT JOIN i RIGHT JOIN imaju sledeće delove:

Deo

Opis

tabela1, tabela2

Imena tabela iz kojih potiču zapisi za kombinovanje.

polje1, polje2

Imena polja koja su spojena. Polja moraju biti istog tip podatka i sadržati istu vrstu podataka, ali ne moraju imati isto ime.

Poređenje

Bilo koji relacioni operator za upoređivanje: "=," "<," ">," "<=," ">=," ili "<>."

Više informacija o sintaksi spoljnog spoja potražite u temi LEFT JOIN, RIGHT JOIN operacije.

Vrh stranice

Prikazuje sve redove iz obe tabele i pridruživanje njima kojima zajednička vrednost postoji

Kada želite da prikažete sve redove iz dve tabele i pridruživanje njima na osnovu zajedničke vrednosti, koristite kompletno spoljno spajanje. Access ne podržava izričito punu spoljni spojevi, ali možete postići na istom pomoću upita za združivanje. Sledeća procedura objašnjava kako da to uradite, ali ako želite više informacija o upitima za združivanje, pogledajte odeljak Takođe pogledajte .

Da biste koristili upit za združivanje za izvršavanje kompletnog spoljnog spajanja:

  1. Kreirajte upit koji ima levo spoljno spajanje u polju koje želite da koristite za kompletno spoljno spajanje.

  2. Na kartici Početak, u grupi Prikazi kliknite na dugme Prikaži, a zatim izaberite stavku SQL prikaz.

  3. Pritisnite kombinaciju tastera CTRL+C da biste kopirali SQL kôd.

  4. Izbrišite tačku i zarez na kraju odredbe FROM, a zatim pritisnite taster ENTER.

  5. Otkucajte reč UNION, a zatim pritisnite taster ENTER.

    Napomena : Nemojte koristiti ključnu reč ALL kada koristite upit za združivanje za izvršavanje kompletnog spoljnog spajanja.

  6. Pritisnite kombinaciju tastera CTRL+V da biste nalepili SQL kôd koji ste kopirali u 3. koraku.

  7. U kodu koji ste nalepili promenite reči LEFT JOIN u RIGHT JOIN.

  8. Izbrišite tačku i zarez na kraju druge odredbe FROM, a zatim pritisnite taster ENTER.

  9. Dodajte odredbu WHERE koja navodi da je vrednost pridruženog polja NULL u prvoj tabeli navedenoj u odredbi FROM (u levoj tabeli).

    Na primer, ako je odredba FROM:

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

    Dodaćete sledeću odredbu WHERE:

    WHERE Products.ID IS NULL

  10. Otkucajte tačku i zarez (;) na kraju odredbe WHERE da biste označili kraj upita za združivanje.

  11. Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.

Unakrsni spojevi

Unakrsni spojevi se razlikuju od unutrašnjih i spoljnih spojeva u toj one nisu izričito predstavljeni u Pristup. U unakrsni spoj, svaki red iz jedne tabele se kombinuje sa svakim redom iz druge tabele, kako se zove Dekartov proizvod ili Dekartov proizvod. Svaki put kada pokrenete upit koji sadrži tabele koje niste izričito pridruženi, Dekartov proizvod je rezultat. Unakrsni spojevi su obično nenamerni, ali postoje slučajevi kada mogu biti korisne.

Zašto koristiti unakrsni spoj?

Unakrsni spoj koristite ako želite da ispitate sve moguće kombinacije redova između dve tabele ili upita. Na primer, pretpostavimo ste tokom godine veoma uspešno poslovali i razmišljate o tome da kupcima odobrite popust. Možete da izradite upit koji sabira nabavke svakog kupca, kreirate malu tabelu koja sadrži nekoliko mogućih procenata popusta i kombinujete ih u drugi upit koji izvršava unakrsni spoj. Na kraju ćete dobiti upit koji prikazuje skup pretpostavljenih popusta za svakog kupca.

Kako koristiti unakrsni spoj?

Unakrsni spoj nastaje svaki put kada u upit uključite tabele ili upite i ne kreirate nijedan izričiti spoj za svaku tabelu ili upit. Svaki red iz svake od tabela ili upita koji nisu izričito spojeni sa nekom drugom tabelom ili upitom Access kombinuje sa svakim drugim redom u rezultatima. Uzmimo u obzir slučaj sa popustima iz prethodnog pasusa. Pretpostavimo da imate 91 kupca i da želite da pogledate pet mogućih procenata popusta. Unakrsni spoj kao rezultat daje 455 redova (proizvod 91 i 5).

Kao što možete da zamislite, nenamerni unakrsni spojevi mogu da kreiraju veoma veliki broj redova u rezultatima upita. Osim toga, ovi rezultati su obično bez značaja, jer ako stvarno ne nameravate da kombinujete svaki red sa svakim drugim redom, većina kombinovanih redova koji se pojavljuju u rezultatima neće imati smisla. Najzad, upiti koji koriste nenamerne unakrsne spojeve mogu zahtevati puno vremena za izvršavanje.

Nenamerni unakrsni spoj u prikazu dizajna upita
Nenamerni unakrsni spoj u prikazu dizajna upita.

1. Zaokružena polja treba da budu spojena jedna sa drugima.

Nenamerni Dekartov proizvod
Dekartov proizvod dobijen nenamerni unakrsni spoj prikazanog iznad.

1. Obratite pažnju na veoma veliki broj zapisa.

Ispravljeni rezultat upita
Rezultati posle kreiranja ispravnog spoja.

1. Obratite pažnju na to da je broj zapisa mnogo manji.

Vrh stranice

Spojite tabele na osnovu nejednakih vrednosti polja

Spojevi se ne moraju zasnivati na jednakosti spojenih polja. Spoj se može zasnivati na bilo kom operatoru za poređenje, kao što je „veće od" (>), „manje od" (<) ili „nije jednako" (<>). Spojevi koji se ne zasnivaju na jednakosti nazivaju se uporedni spojevi.

Koristite uporedni spoj ako želite da kombinujete redove iz dva izvora podataka na osnovu vrednosti polja koja nisu jednaka. Uporedni spojevi su obično zasnovani na operatorima za poređenje „veće od" (>), „manje od" (<), „veće od ili jednako sa" (>=) ili „manje od ili jednako sa" (<=). Uporedni spojevi koji se zasnivaju na operatoru „nije jednako" (<>) mogu vratiti skoro isto onoliko redova kao unakrsni spojevi, a rezultati se teško mogu protumačiti.

Kako koristiti uporedni spoj?

Prikaz dizajna ne podržava uporedne spojeve. Ako želite da ih koristite, morate upotrebiti SQL prikaz. Spoj ipak možete kreirati u prikazu dizajna, prebaciti se na SQL prikaz, pronaći operator za poređenje „jednako" (=) i zameniti ga operatorom koji želite da koristite. Nakon toga, upit ćete ponovo moći da otvorite u prikazu dizajna tek pošto operator za poređenje vratite na „jednako" (=) u SQL prikazu.

Brisanje spoja

Ako Access automatski kreira spoj koji ne želite ili ako ga vi greškom kreirate,  na primer spoj između dva polja koja sadrže podatke različitog tipa,  možete ga izbrisati.

  1. U koordinatnoj mreži za dizajn upita izaberite spoj koji želite da uklonite.

  2. Pritisnite taster DELETE.

– ili –

  • U koordinatnoj mreži za dizajn upita kliknite desnim tasterom miša na spoj koji želite da uklonite, a zatim izaberite stavku Izbriši.

Vrh stranice

Napomena : Odricanje odgovornosti za mašinski prevod: Ovaj članak je preveo računarski sistem bez ljudske intervencije. Microsoft nudi ove mašinske prevode da bi pomogao korisnicima koji ne govore engleski da uživaju u sadržaju o Microsoft proizvodima, uslugama i tehnologijama. Budući da je članak mašinski preveden, može da sadrži greške u rečniku, sintaksi ili gramatici.

Takođe pogledajte

Dodavanje zapisa u tabelu pomoću upita za dodavanje

Kombinovanje rezultata nekoliko upite za izdvajanje pomoću upita za združivanje

Kreiranje upita na osnovu više tabela

Kreiranje, uređivanje ili brisanje relacije

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Office Insider korisnicima

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Zvuči da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×