Proces pravljenja i korišćenja upita u programu Access ponekad je jednostavno stvar izbora polja iz tabele, eventualno primena nekih kriterijuma, a zatim pregledanja rezultata. Ali šta ako su podaci koji su vam potrebni raspoređeni u više tabela, što je češći slučaj? Srećom, možete da napravite upit koji kombinuje informacije iz više izvora. Ova tema istražuje neke scenarije u kojima povlačite podatke iz više tabela i pokazuje na koji način to radite.
Izaberite jednu od sledećih mogućnosti:
Korišćenje podataka iz povezanih tabela za dopunu informacija u upitu
Možete da imate slučajeve u kojima upit zasnovan na tabeli pruža neophodne informacije, ali bi povlačenje podataka iz druge tabele doprinelo tome da rezultati upita budu jasniji i korisniji. Na primer, pretpostavimo da imate listu ID-ova zaposlenih, koja se pojavljuje u rezultatima upita. Shvatate da bi vam bilo korisnije da vidite ime zaposlenog u rezultatima, ali se imena zaposlenih nalaze u drugoj tabeli. Da bi se imena zaposlenih pojavljivala u rezultatima upisa, treba da uključite obe tabele u upit.
Korišćenje čarobnjaka za upite za pravljenje upita od primarne tabele i povezane table
-
Proverite da li tabele imaju definisan odnos u prozoru prozor „Odnosi“.
Kako?
-
Na kartici Alatke baze podataka, u grupi Prikazivanje/skrivanje kliknite na dugme Relacije.
-
Na kartici Dizajn, u grupi Relacije, kliknite na dugme Sve relacije.
-
Identifikujte tabele koje bi trebalo da imaju definisanu relaciju.
-
Ako se tabele vide u prozoru „Relacije“, proverite da li je relacija već definisana.
Relacija se pojavljuje kao linija koja povezuje dve tabele po zajedničkom polju. Da biste videli koja su polja u tablama povezana relacijom, možete da kliknete dvaput na liniju relacije.
-
Ako se tabele ne vide u prozoru „Relacije“, morate da ih dodate.
Na kartici Dizajn, u grupi Prikaži/sakrij kliknite na dugme Imena tabela.
Kliknite dvaput na svaku od tabela koje želite da prikažete, a zatim kliknite na dugme Zatvori.
-
-
Ako ne pronađete relaciju između dve tabele, napravite je tako što ćete prevući polje iz jedne od tabela na polje u drugoj tabeli. Polja po kojima možete da napravite relaciju između tabela moraju da imaju iste tipove podataka.
Napomena: Možete da napravite relaciju između polja koje je tip podatka AutomatskiBroj i polje koje je tip numeričkih podataka, ako to polje ima veličinu polja dugačkog celog broja. To je često slučaj kada pravite odnos jedan-prema-više.
Pojavljuje se dijalog Uređivanje relacija.
-
Izaberite stavku Napravi da biste napravili relaciju.
Dodatne informacije o opcijama koje imate kada pravite relaciju potražite u članku Pravljenje, uređivanje ili brisanje relacija.
-
Zatvorite prozor „Relacije“.
-
-
Na kartici Kreiranje, u grupi Upiti kliknite na dugme Čarobnjak za upite.
-
U dijalogu Novi upit izaberite stavku Čarobnjak za jednostavne upite, a zatim kliknite na dugme U redu.
-
U kombinovanom okviru Tabele/Upiti izaberite tabelu koja sadrži osnovne informacije koje želite da uključite u upit.
-
Na listi Dostupna polja kliknite na prvo polje koje želite da uključite u upit, a zatim kliknite na dugme sa jednom strelicom nadesno da biste premestili to polje na listu Izabrana polja. Uradite isto za svako dodatno polje te tabele koje želite da uključite u upit. To mogu da budu polja koja želite da rezultat upita daje ili polja koja želite da koristite kako biste ograničili redove u rezultatu primenom kriterijuma.
-
U kombinovanom okviru Tabele/Upiti kliknite na tabelu koja sadrži povezane podatke koje želite da koristite kako biste dopunili rezultate upita.
-
Polja koja želite da koristite kako biste dopunili rezultate upita dodajte na listu Izabrana polja, a zatim izaberite stavku Dalje.
-
U okviru stavke Želite li detaljan upit ili rezime? izaberite stavku Detaljno ili Rezime.
Ako ne želite da upit izvršava nikakve agregatne funkcije (Sum, Avg, Min, Max, Count, StDev ili Var), odaberite detaljan upit. Ako želite da upit izvršava agregatnu funkciju, odaberite rezime upita. Kada napravite izbor, kliknite na dugme Dalje.
-
Kliknite na dugme Završi da biste prikazali rezultate.
Primer koji koristi uzorak baze podataka preduzeća Northwind
U sledećem primeru koristite čarobnjak za upite da biste napravili upit koji prikazuje listu porudžbina, nadoknadu za isporuku za svaku porudžbinu i ime zaposlenog koji je obradio svaku porudžbinu.
Napomena: Ovaj primer podrazumeva izmenu uzorka baze podataka preduzeća Northwind. Možda bi trebalo da napravite rezervnu kopiju uzorka baze podataka preduzeća Northwind, a zatim da pratite ovaj primer tako što ćete koristiti tu rezervnu kopiju.
Korišćenje čarobnjaka za upite za pravljenje upita
-
Otvorite uzorak baze podataka preduzeća Northwind. Zatvorite obrazac za prijavljivanje.
-
Na kartici Kreiranje, u grupi Upiti kliknite na dugme Čarobnjak za upite.
-
U dijalogu Novi upit izaberite stavku Čarobnjak za jednostavne upite, a zatim kliknite na dugme U redu.
-
U kombinovanom okviru Tabele/Upiti izaberite stavku Tabela: Porudžbine.
-
Na listi Dostupna polja kliknite dvaput na polje IDPorudžbine da biste ga premestili na listu Izabrana polja. Kliknite dvaput na polje Nadoknada za isporuku da biste premestili to polje na listu Izabrana polja.
-
U kombinovanom okviru Tabele/Upiti izaberite stavku Tabela: Zaposleni
-
Na listi Dostupna polja kliknite dvaput na polje Ime da biste ga premestili na listu Izabrana polja. Kliknite dvaput na polje Prezime da biste premestili to polje na listu Izabrana polja. Kliknite na dugme Dalje.
-
Pošto pravite listu svih porudžbina, trebalo bi da koristite detaljan upit. Ako sabirate nadoknadu za isporuku po zaposlenom ili vršite neku drugu agregatnu funkciju, koristite rezime upita. Izaberite stavku Detaljno (prikazuje svako polje svakog zapisa), a zatim kliknite na dugme Dalje.
-
Kliknite na dugme Završi da biste prikazali rezultate.
Upit vraća listu porudžbina, svaku sa nadoknadom za isporuku i imenom i prezimenom zaposlenog koji ju je obradio.
Povezivanje podataka iz dve tabele pomoću njihovih relacija sa trećom tabelom
Podaci iz dve tabele često su povezani međusobno putem treće tabele. To je obično tako zbog toga što su podaci iz prve dve tabele povezani relacijom odnos više-prema-više. Često je dobra praksa da prilikom dizajniranja baze podataka razdelite relaciju više-prema-više između dve tabele na dve relacije jedan-prema-više koje uključuju tri tabele. To radite tako što pravite treću tabelu, koja se zove tabela spajanja ili tabela relacija, koja ima primarni ključ i spoljni ključ za svaku od druge dve tabele. Relacija jedan-prema-više tada se pravi između svakog sporednog ključa u tabeli spajanja i odgovarajućeg primarnog ključa jedne od druge dve tabele. U takvim slučajevima morate da uključite sve tri tabele u upit, čak i ako želite da preuzmete podatke iz samo dve od njih.
Pravljenje upita za izdvajanje pomoću tabela sa relacijom više-prema-više
-
Na kartici Kreiranje, u grupi Upiti kliknite na dugme Dizajn upita.
-
Kliknite dvaput na dve tabele koje sadrže podatke koje želite da uključite u upit, kao i na tabelu spajanja koja ih povezuje, a zatim kliknite na dugme Zatvori.
Sve tri tabele pojavljuju se u radnom prostoru za dizajn upita, spojene po odgovarajućim poljima.
-
Kliknite dvaput na svako od polja koja želite da koristite u rezultatima upita. Svako polje se zatim pojavljuje u upitu koordinatna mreža dizajna.
-
U koordinatnoj mreži za dizajn upita koristite red Kriterijumi da biste uneli kriterijume polja. Da biste koristili kriterijum polja bez prikazivanja polja u rezultatima upita, opozovite izbor u polju u redu Prikaži za to polje.
-
Da biste sortirali rezultate na osnovu vrednosti u polju, u koordinatnoj mreži za dizajn upita izaberite stavku Rastući redosled ili Opadajući redosled (u zavisnosti od toga na koji način želite da sortirate zapise) u redu Sortiranje za to polje.
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Access prikazuje rezultate upita na listu prikaz lista sa podacima.
Primer koji koristi uzorak baze podataka preduzeća Northwind
Napomena: Ovaj primer podrazumeva izmenu uzorka baze podataka preduzeća Northwind. Možda bi trebalo da napravite rezervnu kopiju uzorka baze podataka preduzeća Northwind, a zatim da pratite ovaj primer tako što ćete koristiti rezervnu kopiju.
Recimo da imate novu mogućnost za poslovanje: Dobavljač iz Rija de Žaneira pronašao je vaš veb sajt i možda želi da posluje sa vama. Međutim, on posluje samo u Riju i susednom Sao Paulu. Pruža sve kategorije prehrambenih proizvoda koje vi nabavljate. To je prilično veliko preduzeće i traži garancije da ćete moći da mu pružite pristup dovoljnom broju potencijalnih potrošača kako bi mu se to isplatilo: Najmanje 20.000,00 BRL prodaje godišnje (oko 9.300,00 USD). Da li možete da mu pružite željeno tržište?
Podaci koji su vam potrebni kako biste odgovorili na to pitanje nalaze se na dva mesta: u tabeli „Klijenti“ i u tabeli „Detalji o porudžbini“. Te tabele su povezane međusobno pomoću tabele „Porudžbine“. Relacije između tabela već su definisane. U tabeli porudžbine svaka porudžbina može da ima samo jednog klijenta povezanog sa tabelom „Klijenti“ po polju „IDKupca“. Svaki zapis u tabeli „Detalji o porudžbini“ povezan je samo sa jednom porudžbinom u tabeli „Porudžbine“ po polju „IDPorudžbine“. Tako da dati klijent može da ima mnogo porudžbina, od kojih svaka ima mnogo detalja o porudžbini.
U ovom primeru napravićete unakrsni upit koji prikazuje ukupnu prodaju po godini u gradovima Rio de Žaneiro i Sao Paulo.
Pravljenje upita u prikazu dizajna
-
Otvorite bazu podataka preduzeća Northwind. Zatvorite obrazac za prijavljivanje.
-
Na kartici Kreiranje, u grupi Upiti kliknite na dugme Dizajn upita.
-
Kliknite dvaput na stavku Kupci, Porudžbine, a zatimizaberite stavku Detalji porudžbine.
Sve tri tabele pojavljuju se u radnom prostoru za dizajn upita.
-
U tabeli „Klijenti“ kliknite dvaput na polje „Grad“ da biste ga dodali u koordinatnu mrežu dizajna upita.
-
U koordinatnoj mreži za dizajn upita, u koloni Grad, u redu Kriterijumi otkucajte tekst In ("Rio de Žaneiro","Sao Paulo"). To u upit uključuje samo one zapise u kojima je klijent iz jednog od ta dva grada.
-
U tabeli „Detalji o porudžbini“ kliknite dvaput na polja „DatumIsporuke“ i „JediničnaCena“.
Polja se dodaju u koordinatnu mrežu za dizajn upita.
-
U koloni DatumIsporuke, u koordinatnoj mreži za dizajn upita izaberite red Polje. Zamenite [DatumIsporuke] sa Godina: Format([DatumIsporuke],"gggg"). Tako se pravi pseudonim polja Godina koji omogućava da koristite samo deo godine vrednosti iz polja „DatumIsporuke“.
-
U koloni JediničnaCena, u koordinatnoj mreži za dizajn upita izaberite red Polje. Zamenite [JediničnaCena] sa Prodaja: [DetaljiOPorudžbini].[JediničnaCena]*[Količina]-[DetaljiOPorudžbini].[JediničnaCena]*[Količina]*[Popust]. Tako se pravi pseudonim polja Prodaja koji izračunava prodaju za svaki zapis.
-
Na kartici Dizajn, u grupi Tip upita izaberite opciju Unakrsna tabela.
Dva nova reda, Ukupno i Unakrsno, pojavljuju se u koordinatnoj mreži za dizajn upita.
-
U koloni Grad u koordinatnoj mreži za dizajn upita izaberite red Unakrsno, a zatim izaberite stavku Naslov reda.
To čini da se vrednosti grada pojave kao naslovi reda (to jest, upit daje jedan red za svaki grad).
-
U koloni Godina izaberite red Unakrsno, a zatim izaberite stavku Naslov kolone.
To čini da se vrednosti godine pojave kao naslovi kolona (to jest, upit daje jednu kolonu za svaki godinu).
-
U koloni Prodaja izaberite red Unakrsno, a zatim izaberite stavku Vrednost.
To čini da se vrednosti prodaje pojave na preseku redova i kolone (to jest, upit daje jednu vrednost prodaje za svaku kombinaciju grada i godine).
-
U koloni Prodaja izaberite red Ukupne vrednosti, a zatim izaberite stavku Zbir.
To čini da upit sabere vrednosti u ovoj koloni.
Red Ukupne vrednosti za druge dve kolone možete da ostavite sa podrazumevanom vrednošću Grupiši po, jer želite da vidite svaku vrednost za te kolone, a ne agregatne vrednosti.
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Sada imate upit koji daje ukupnu prodaju po godini u Riju de Žaneiru i Sao Paulu.
Prikaz svih zapisa iz dve slične tabele
Ponekad treba da kombinujete podatke iz dve tabele koje su identične po strukturi, ali jedna od njih se nalazi u drugoj bazi podataka. Uzmite u obzir sledeću situaciju.
Recimo da ste analitičar koji radi sa podacima o učenicima. Pokrećete inicijativu za deljenje podataka između svoje škole i neke druge škole, tako da obe škole mogu da poboljšaju nastavni program. Za neka pitanja koja želite da istražite, bilo bi bolje da pogledate zapise iz obe škole zajedno, a ne da pretražujete zasebno zapise svake škole.
Mogli biste da uvezete podatke druge škole u nove tabele u bazi podataka, ali onda se promene podataka druge škole ne bi odražavale u vašoj bazi podataka. Bolje rešenje jeste da se povežete sa tabelama druge škole, a zatim napravite upite koji kombinuju podatke kada ih pokrenete. Mogli biste da analizirate podatke u vidu jednog skupa, a ne da izvršite dve analize i da pokušate da ih tumačite kao da su jedna.
Da biste prikazali sve zapise iz dve tabele sa identičnom strukturom, koristite upit sjedinjavanja.
Upite za združivanje nije moguće prikazivati u prikazu dizajna. Pravite ih pomoću SQL komandi koje unosite na kartici prikaz „SQL“ objekta.
Pravljenje upita za združivanje pomoću dve tabele
-
Na kartici Kreiranje, u grupi Upiti kliknite na dugme Dizajn upita.
-
Na kartici Dizajn, u grupi Tip upita izaberite stavku Združivanje.
Upit se prebacuje iz prikaza dizajna u SQL prikaz. Kartica objekta SQL prikaza trenutno je prazna.
-
U SQL prikazu otkucajte tekst SELECT praćen listom polja iz prve od tabela koje želite u upitu. Imena polja trebalo bi da budu u uglastim zagradama i razdvojena zarezima. Kada završite kucanje imena polja, pritisnite taster ENTER. Kursor se premešta za jedan red nadole u SQL prikazu.
-
Otkucajte tekst FROM praćen imenom prve od tabela koje želite u upitu. Pritisnite taster ENTER.
-
Ako želite da navedete kriterijum za polje iz prve tabele, otkucajte WHERE praćeno imenom polja, operatorom poređenja (obično, znakom jednakosti (=) i kriterijumom. Možete da dodate dodatne kriterijume na kraj odredbe WHERE pomoću ključne reči AND i iste sintakse koja se koristi za prvi kriterijum; Na primer, WHERE [ClassLevel]="100" AND [CreditHours]>2. Kada završite sa navođenjem kriterijuma, pritisnite taster ENTER.
-
Otkucajte tekst UNION, a zatim pritisnite taster ENTER.
-
Otkucajte tekst SELECT praćen listom polja iz druge tabele koju želite u upitu. Trebalo bi da uključite ista polja iz ove tabele kao ona koja ste uključili iz prve tabele i istim redosledom. Imena polja trebalo bi da budu u uglastim zagradama i razdvojena zarezima. Kada završite kucanje imena polja, pritisnite taster ENTER.
-
Otkucajte tekst FROM praćen imenom druge tabele koju želite da uključite u upit. Pritisnite taster ENTER.
-
Ako želite, dodajte odredbu WHERE, kao što je opisano u 6. koraku ove procedure.
-
Otkucajte tačku i zarez (;) da biste naznačili kraj upita.
-
Na kartici Dizajn, u grupi Rezultati kliknite na dugme Pokreni.
Rezultati se pojavljuju u prikazu lista sa podacima.