Ponekad se proces stvaranja i korištenja upita u programu Access sastoji samo od odabira polja u tablici te eventualne primjene nekih kriterija i prikaza rezultata. Ali što ako su podaci koju su vam potrebni, a to se često događa, raspoređeni u više tablica? Srećom, možete stvoriti upit koji kombinira informacije iz više izvora. U ovoj se temi istražuju scenariji izvlačenja podataka iz više tablica i pokazuje taj postupak.
Što vas zanima?
Poboljšanje podataka u upitu pomoću podataka iz povezane tablice
U nekim vam slučajevima upit koji se temelji na jednoj tablici pruža potrebne informacije, ali povlačenje podataka iz druge tablice učinit će rezultate upita jasnijima i korisnijima. Pretpostavimo, na primjer, da imate popis ID-ova zaposlenika koji se pojavljuju u rezultatima upita. Jasno vam je da bi bilo korisnije vidjeti ime zaposlenika u rezultatima, ali imena zaposlenika nalaze se u drugoj tablici. Da bi se imena zaposlenika pojavila u rezultatima upita, u upit morate uvrstiti obje tablice.
Stvaranje upita iz primarne tablice i povezane tablice pomoću čarobnjaka za upite
-
U prozoru Odnosi provjerite imaju li tablice definirani odnos.
Kako?
-
Na kartici Alati baze podataka u grupi Pokaži/sakrij kliknite Odnosi.
-
Na kartici Dizajn u grupi Odnosi kliknite Svi odnosi.
-
Prepoznajte tablice koje moraju imati definirani odnos.
-
Ako su tablice vidljive u prozoru Odnosi, provjerite je li odnos već definiran.
Odnos se pojavljuje kao crta koja povezuje dvije tablice u zajedničkom polju. Da biste vidjeli koja su polja u tablici povezana odnosom, dvokliknite crtu odnosa.
-
Ako tablice nisu vidljive u prozoru Odnosi, morate ih dodati.
Na kartici Dizajn u grupi Pokaži/sakrij kliknite Nazivi tablica.
Dvokliknite svaku tablicu koju želite prikazati, a zatim kliknite Zatvori.
-
-
Ako ne možete pronaći odnos između dvije tablice, stvorite ga povlačenjem polja iz jedne tablice u polje druge tablice. Polja za koja stvarate odnos između tablice moraju imati identične vrste podataka.
Napomena: Možete stvoriti odnos između polja koje je vrsta podatka AutoNumber i polja koje je vrsta podataka Number, ako to polje ima dugu cjelobrojnu veličinu polja. To će često biti slučaj kada stvarate odnos preslikavanja jednog člana na više njih.
Prikazat će se dijaloški okvir Uređivanje odnosa.
-
Da biste stvorili odnos, kliknite Stvori.
Dodatne informacije o mogućnostima koje su vam dostupne kada stvarate odnos potražite u članku Stvaranje, uređivanje i brisanje odnosa.
-
Zatvorite prozor Odnos.
-
-
Na kartici Stvaranje u grupi Upiti kliknite Čarobnjak za upite.
-
U dijaloškom okviru Novi upit kliknite Čarobnjak za jednostavne upite, a zatim U redu.
-
U kombiniranom okviru Tablice/upiti kliknite tablicu koja sadrži osnovne podatke za upit.
-
Na popisu Dostupna polja kliknite prvo polje koje želite uvrstiti u upit, a zatim kliknite gumb s jednostrukom desnom strelicom da biste to polje premjestili na popis Odabrana polja. Taj postupak ponovite za svako dodatno polje iz tablice koje želite uvrstiti u upit. To mogu biti polja koja će upit vratiti kao izlaz ili polja kojima želite ograničiti retke izlaza primjenom kriterija.
-
U kombiniranom okviru Tablice/upiti kliknite tablicu koja sadrži povezane podatke koje želite koristiti radi poboljšanja rezultata upita.
-
Na popis Odabrana polja dodajte polja koja želite koristiti radi poboljšanja rezultata upita, a zatim kliknite Dalje.
-
U odjeljku Želite li detaljni ili sažeti upit? kliknite Detaljno ili Sažetak.
Ako ne želite da upit izvršava funkcije zbrajanja (Sum, Avg, Min, Max, Count, StDev ili Var), odaberite Detaljno. Ako želite da upit izvršava funkcije zbrajanja, odaberite Sažetak. Kada odaberete, kliknite Spremi.
-
Da biste prikazali rezultate, kliknite Završi..
Primjer koji koristi oglednu bazu podataka tvrtke Northwind
U sljedećem primjeru, koristite čarobnjak za upite da biste stvorili upit koji prikazuje popis narudžbi, naknadu za isporuku za svaku narudžbu te ime zaposlenika koji je rukovao pojedinom narudžbom.
Napomena: Ovaj primjer obuhvaća modificiranje ogledne baze tvrtke Northwind. Stvorite sigurnosnu kopiju ogledne baze tvrtke Northwind, a zatim primijenite ovaj primjer na sigurnosnoj kopiji.
Korištenje čarobnjaka za upite radi stvaranja upita
-
Otvorite oglednu bazu podataka tvrtke Northwind. Zatvorite obrazac za prijavu.
-
Na kartici Stvaranje u grupi Upiti kliknite Čarobnjak za upite.
-
U dijaloškom okviru Novi upit kliknite Čarobnjak za jednostavne upite, a zatim U redu.
-
U kombiniranom okviru Tablice/upiti kliknite Tablica: Narudžbe.
-
Na popisu Dostupna polja dvokliknite IDNarudžbe da biste polje premjestili na popis Odabrana polja. Dvokliknite Naknada za dostavu da biste polje premjestili na popis Odabrana polja.
-
U kombiniranom okviru Tablice/upiti kliknite Tablica: Zaposlenici.
-
Na popisu Dostupna polja dvokliknite Ime da biste polje premjestili na popis Odabrana polja. Dvokliknite Prezime da biste polje premjestili na popis Odabrana polja. Kliknite Dalje.
-
S obzirom na to da stvarate popis svih narudžbi, trebali biste koristiti detaljni upit. Ako zbrajate naknadu za isporuku po zaposleniku ili izvršavate neku drugu funkciju zbrajanja, koristite upit Sažetak. Kliknite Detaljno (prikazuje svako polje svakog zapisa), a zatim kliknite Sljedeće.
-
Da biste prikazali rezultate, kliknite Završi..
Upit vraća popis narudžbi, svaku sa svojom naknadom za dostavu, te imenom i prezimenom zaposlenika koji je njome rukovao.
Povezivanje podataka iz dvije tablice pomoću njihovih odnosa s trećom tablicom
Podaci u dvije tablice često su međusobno povezani putem treće tablice. To je obično slučaj jer su podaci između prve dvije tablice povezani u odnos preslikavanja više na više članova. Često je dobra praksa dizajna baze podataka podijeliti odnos više-prema-više između dviju tablica u dva odnosa jedan-prema-više koji obuhvaćaju tri tablice. To možete učiniti stvaranjem treće tablice, koja se naziva tablicom spajanja ili tablicom odnosa, koja sadrži primarni ključ i vanjski ključ za svaku drugu tablicu. Zatim se stvara odnos jedan-prema-više između svakog vanjskog ključa u tablici spajanja i odgovarajućeg primarnog ključa jedne od drugih tablica. U takvim slučajevima u upit morate uključiti sve tri tablice, čak i ako želite dohvatiti podatke iz samo dvije od njih.
Izrada upita odabiranja korištenjem tablica s odnosom više-na-više
-
Na kartici Stvaranje u grupi Upiti kliknite Dizajn upita.
-
Dvokliknite dvije tablice koje sadrže podatke koje želite uvrstiti u upit te tablicu spajanja koja ih povezuje, a zatim kliknite Zatvori.
Sve tri tablice pojavljuju se na radnoj površini dizajna upita, a povezane su na odgovarajućim poljima.
-
Dvokliknite svako polje koje želite upotrijebiti u rezultatima upita. Svako se polje zatim pojavljuje u rešetki za dizajniranje upita.
-
U dizajnerskoj rešetki upita upotrijebite redak Kriterij da biste unijeli kriterij polja. Da biste koristili kriterija polja bez prikaza polja u rezultatima upita, poništite potvrdni okvir u retku Prikaz za to polje.
-
Da biste sortirali rezultate utemeljene na vrijednostima u polju, u dizajnerskoj rešetki upita, kliknite Uzlazno ili Silazno (ovisno o tome kako želite sortirati podatke) u retku Sortiraj za to polje.
-
Na kartici Dizajn u grupi Rezultati kliknite Izvedi.
Access prikazuje izlaz upita u prikazu podatkovnog lista.
Primjer koji koristi oglednu bazu podataka tvrtke Northwind
Napomena: Ovaj primjer obuhvaća modificiranje ogledne baze tvrtke Northwind. Stvorite sigurnosnu kopiju ogledne baze tvrtke Northwind, a zatim primijenite ovaj primjer na sigurnosnoj kopiji.
Pretpostavimo da se pojavila nova poslovna prilika: dobavljač u Rio de Janeiru pronašao je vaše web-mjesto i možda bi htio poslovati s vama. No posluje samo na području Ria i obližnjeg São Paula. Distribuiraju sve kategorije prehrambenih proizvoda za koje ste vi posrednik. Prilično su velika tvrtka i žele jamstvo da im možete osigurati dovoljno veliku potencijalnu prodaju: najmanje 20 000,00 BRL godišnjeg prometa (oko 9300,00 USD). Možete li im pružiti tržište kakvo traže?
Podaci potrebni da odgovorite na to pitanje nalaze se na dva mjesta: u tablici Klijenata i tablici Detalji narudžbe. Te dvije tablice međusobno su povezane putem tablice Narudžbe. Odnosi između tablica već su definirani. U tablici Narudžbe svaka narudžba može imati jednog klijenta povezanog s tablicom Kupci u polju IDKupca. Svaki zapis u tablici Detalji narudžbe povezan je samo s jednom narudžbom u tablici Narudžbe u polju IDNarudžbe. Na taj način svaki klijent može imati više narudžbi s više detalja narudžbi.
U ovom ćete primjer, izraditi unakrsni upit koji prikazuje ukupnu godišnju prodaju u gradovima Rio de Janeiro i São Paulo.
Stvaranje upita u prikazu Dizajn
-
Otvorite bazu podataka tvrtke Northwind. Zatvorite obrazac za prijavu.
-
Na kartici Stvaranje u grupi Upiti kliknite Dizajn upita.
-
Dvokliknite Korisnici,Narudžbe, a zatimDetalji narudžbe.
Sve tri tablice pojavljuju se na radnoj površini dizajna upita.
-
U tablici Kupci dvokliknite polje Grad da biste ga dodali u rešetku dizajna upita.
-
U rešetki dizajna upita u stupac Grad redak Kriterij upišite U („Rio de Janeiro”,„São Paulo”). Na taj se način u upit dodaju samo zapisi u kojima je klijent iz jednog od ta dva grada.
-
U tablici Detalji narudžbe dvokliknite polja DatumOtpreme i JediničnaCijena.
Polja će se dodati u rešetku dizajna upita.
-
U stupcu DatumOtpreme u rešetki dizajna upita odaberite redak Polje. Zamijenite DatumOtpreme s Godina: Format([DatumOtpreme],„yyyy”). Na taj se način stvara pseudonim polja, Godina, koji vam omogućuje korištenje samo dijela godina vrijednosti u polju DatumOtpreme.
-
U stupcu JediničnaCijena u rešetki dizajna upita odaberite redak Polje. Zamijenite [JediničnaCijena] s Prodaja: [Detalji narudžbe].[JediničnaCijena]*[Količina]-[Detalji narudžbe].[JediničnaCijena]*[Količina]*[Popust]. Na taj se način stvara pseudonim polja, Prodaja koji izračunava prodaju za svaki zapis.
-
Na kartici Dizajn u grupi Vrsta upita kliknite Unakrsno.
U rešetki dizajna upita pojavit će se dva nova retka Ukupno i Unakrsno.
-
U stupcu Grad rešetke dizajna upita kliknite redak Unakrsno, a zatim kliknite Zaglavlje retka.
Na taj se način vrijednosti grada pojavljuju kao zaglavlja redaka (upit vraća jedan redak za svaki grad).
-
U stupcu Godina kliknite redak Unakrsno, a zatim kliknite Zaglavlje stupca.
Na taj se način vrijednosti godine pojavljuju kao zaglavlja stupaca (upit vraća jedan stupac za svaku godinu).
-
U stupcu Prodaja kliknite redak Unakrsno, a zatim kliknite Vrijednost.
Na taj se način vrijednosti prodaje pojavljuju na sjecištu redaka i stupaca (upit vraća jedan iznos prodaje za svaku kombinaciju grada i godine).
-
U stupcu Prodaja kliknite redak Ukupno, a zatim kliknite Zbroj.
Na taj način upit zbraja vrijednosti u tom stupcu.
Redak Zbrojevi možete ostaviti na zadanoj vrijednosti Grupiraj po za druga dva stupca jer za svaki stupac želite vidjeti vrijednost, a ne vrijednost zbroja.
-
Na kartici Dizajn u grupi Rezultati kliknite Izvedi.
Sada imate upit koji vraća ukupnu godišnju prodaju u Rio de Janeiru i São Paulu.
Prikaz svih zapisa iz dvije slične tablice
Ponekad ćete htjeti kombinirati podatke iz dvije tablice koje imaju identičnu strukturu, ali jedna se nalazi u drugoj bazi podataka. Promotrimo sljedeći scenarij.
Radite u školi kao analitičar koji analizira podatke o učenicima. Pokrećete inicijativu dijeljenja podataka između vaše i još jedne škole da bi obje poboljšale svoju nastavu. Za neka pitanja koja želite istražiti bilo bi bolje kada biste mogli pregledavati zapise iz obje škole zajedno, a ne odvojeno.
Mogli biste uvesti podatke druge škole u nove tablice svoje baze podatka, ali tada se promjene podataka druge škole ne bi odražavale u vašoj bazi podataka. Bolje bi bilo povezati tablice druge škole, a zatim stvoriti upite koji kombiniraju podatke kada ih pokrenete. Mogli biste analizirati podatke kao jedan skup, a ne biste trebali izvršavati dvije analize i pokušati ih tumačiti kao jednu.
Da biste prikazali sve zapise iz dvije tablice s identičnom strukturom, upotrijebite upit s unijom.
Upiti s unijom ne mogu se prikazivati u prikazu Dizajn. Izrađujete ih pomoću SQL naredbi koje unosite na kartici objekta SQL prikaz.
Stvaranje upita s unijom pomoću dvije tablice.
-
Na kartici Stvaranje u grupi Upiti kliknite Dizajn upita.
-
Na kartici Dizajn u grupi Vrsta upita kliknite Unija.
Upit prelazi iz prikaza Dizajn u SQL prikaz. U ovom je trenutku kartica objekta SQL prikaza prazna.
-
U SQL prikazu upišite SELECT, a zatim popis polja iz prve tablice koju želite u upitu. Nazivi polja moraju biti u uglatim zagradama i odvojeni zarezima. Kada završite s upisivanjem naziva polja, pritisnite ENTER. Pokazivač će se prebaciti u sljedeći redak SQL prikaza.
-
Upišite FROM, a zatim naziv prve tablice koju želite u upitu. Pritisnite ENTER.
-
Ako želite odrediti kriterij za polje iz prve tablice, upišite WHERE, a zatim naziv polja, operator usporedbe (obično znak jednakosti (=)) i kriterij. Možete dodavati još kriterija na kraj izraza WHERE pomoću ključne riječi AND te istom sintaksom koja se koristila za prvi kriterij; na primjer, WHERE [ClassLevel]="100" AND [CreditHours]>2. Kada završite s određivanjem kriterija, pritisnite ENTER.
-
Upišite UNION, a zatim pritisnite Enter.
-
Upišite SELECT, a zatim popis polja iz druge tablice koju želite u upitu. Trebali biste istim redoslijedom uvrstiti ista polja koja ste uvrstili iz prve tablice. Nazivi polja moraju biti u uglatim zagradama i odvojeni zarezima. Kada završite s upisivanjem naziva polja, pritisnite ENTER.
-
Upišite FROM, a zatim naziv druge tablice koju želite uvrstiti u upit. Pritisnite ENTER.
-
Ako želite, dodajte izraz WHERE kao što je opisano u 6. koraku ovog postupka.
-
Upišite točku-zarez (;) da biste označili kraj upita.
-
Na kartici Dizajn u grupi Rezultati kliknite Izvedi.
Rezultat će se pojaviti u prikazu podatkovne tablice.