Brzo izdvajanje podataka – Access

Interfejs novijih verzija Access‑a okrenut je prema korisnicima skromnijeg iskustva. Loša strana takvog pristupa dolazi u kombinaciji sa urođenom radoznalošću – ako je nešto otvoreno, ljudi su skloni čačkanjem da pokvare stvar. Dobra strana (za korisnika) je da mu ređe treba programer za naizgled banalne stvari. Jedna od njih je brz način dolaska do odgovora – korisnik bi trebalo lako da sastavi upit kojim će izdvojiti, grupisati ili sumirati podatke.

AccessUpiti koje će pri tome koristiti spadaju u kategoriju esencijalnih alatki svake baze podataka. Oni pasivno sakupljaju i obrađuju podatke, što znači da nemaju mogućnost izmene ili brisanja podataka. Prepoznaju se po tome što odgovarajuća SQL komanda započinje iskazom SELECT. Klasičan upit će prikazati sve podatke koji postoje u tabeli, ako takav upit nije od koristi sve dok se u njega ne dodaju uslovi, kriterijumi, veze i druge SQL funkcije. Za najjednostavnije stvari upit čak i nije potreban: dovoljno je otvoriti tabelu i upotrebom alatki za sortiranje i filtriranje doći do traženih podataka.

Access‑ov čarobnjak nudi lak način za kreiranje dva napredna upita, jednog za pronalaženje dupliranih unosa i drugi za pronalazak neuparenih zapisa (unmached). Neuparen zapis je onaj koji postoji u jednoj tabeli, a ne postoji u drugoj. Recimo da postoji tabela studenata i tabela ocena određenog predmeta – ovakav upit može da prikaže listu studenata koji nisu izašli na ispit. Važna napomena za ovaj upit se odnosi na polja koja može da prikaže. Naime, u listu polja ne možete da uključite polja iz prve tabele (lista svih studenata) zato što se nijedan zapis iz te tabele ne prikazuje, prikazuju se samo zapisi iz druge tabele (ocene sa ispita).

Uvođenjem dodatnih kriterijuma filtriranja podataka korisnik se upoznaje sa logičkim operatorima AND (logičko „i“) i OR (logičko „ili“). Njih nije teško shvatiti sve do momenta kada se ukaže potreba za njihovim višestrukim kombinovanjem kada je važno upoznati prioritete i koristiti zagrade; u suprotnom upit neće prijaviti grešku, ali će vratiti podatke koje niste želeli. Rekli biste da je ponekad bolje nemati informaciju nego imati pogrešnu ili delimičnu tačnu (najgori slučaj).

Forme upita

‘1a

SELECT Okrug, Grad,

Count(Prezime) As BStudent

FROM tblStudenti

GROUP BY Okrug, Grad

‘1b

HAVING Okrug=”Severnobanatski”

AND Grad=”Kikinda”

‘1c

HAVING Okrug=”Severnobanatski”

AND Grad=”Kikinda” OR Grad=”Horgoš”

‘1d

HAVING Okrug=”Severnobanatski”

AND (Grad=”Kikinda” OR Grad=”Horgoš”)

Slika 2: Primer kombinovanja

AND i OR upita

Logički operator AND vraća vrednost tačno samo onda kada su svi uslovi ispunjeni („i jedan i drugi“, odnosno „svi“). Operator OR samo onda kada je bilo koji od uslova ispunjen („ili jedan ili drugi“, odnosno „bilo koji“). Pogledajmo na tri primera kako se različitom upotrebom i kombinacijom operatora dolazi do različitih rezultata. Upitom 1a ćemo prebrojati studente po gradovima i okruzima. Ove podatke možete dodatno filtrirati dopisivanjem iskaza 1b Prikazuje se ukupan broj studenata koji dolaze iz ovog okruga i ovog grada. Upit ćemo proširiti tako da ćemo u listu prikazati i one koji dolaze iz drugog mesta istog okruga (1c).

SQL upit koji Access generiše

SELECT ImePrezime, Okrug, Mesto

FROM tblStudenti

WHERE (((tblStudenti.Okrug)=”severnobanatski”)

AND ((tblStudenti.Mesto)=”Horgoš” Or (tblStudenti.Mesto)=”Kikinda”))

OR (((tblStudenti.Okrug)=”šumadijski”)

AND ((tblStudenti.Mesto)=”Aranđelovac” Or (tblStudenti.Mesto)=”Topola”));

Ovakav upit krije zamku i najčešće vraća polu(ne)tačne podatke. Zapravo, on radi baš ono što smo napisali – prikazuje broj studenata iz severnobatskog okruga koji dolaze iz Kikinde, ali i studente koji dolaze iz Horgoša bez obzira na to kom okrugu mesto pripada. Sve je u redu dok postoji samo jedno mesto pod tim nazivom, međutim poznati su primeri više mesta sa istim nazivom (u SAD postoji pet Beograda). Nalik matematičkim operacijama koje se nalaze u okviru zagrada i imaju prednost u računanju, deo upita unutar zagrada takođe ima zadatak da grupiše uslove. Ispravno napisan uslov dat je na slici 1d.

Operator OR se primenjuje nad zapisima dok se operator AND primenjuje nad poljima. Iz gornjeg primera vidite da smo operatorom OR zadali dva uslova nad poljem Grad. Operator AND se može samo jednom primeniti nad jednim poljem jer se u suprotnom nikada ne bi dobio nijedan rezultat, recimo da iskaz „i Beograd i Kikinda“ nema mnogo smisla, ali kombinovanje operatora AND nad različitim poljima i te kako ima smisla („i severnobatski i Kikinda“).

Grafički interfejs olakšava dizajniranje upita kojim se opisana zamka može izbeći. Na slici 2 dajemo primer višestrukog kombinovanja AND i OR logičkih operatora – oni se pišu ispod polja počev od reda Criteria pa ispod. Ako ste, ipak, navikli da pišete SQL, upit koji Access generiše dat je na slici 3.

Uređuje Vladislav Struharik

(Objavljeno u PC#190)