Sunteți pe pagina 1din 18

Curs 4: CREAREA I UTILIZAREA INTEROGRILOR

Interogrile (queries) reprezint poate cel mai interesant i complex tip


de obiecte ale oricrei baze de date, deoarece prin intermediul lor se pot
procesa, sintetiza i utiliza ntr-un mod superior datele existente n tabele.
La fel ca i la tabele, Access-ul pune la dispoziie instrumente evoluate
de proiectare vrjitori, ferestre de dialog specializate i alte modaliti de
acces la date care fac posibil programarea vizual i exclud aproape n
totalitate necesitatea de a scrie cod. Interogrile Access fructific pe deplin
aceste faciliti i i ajut chiar i pe utilizatorii fr cunotine deosebite n
domeniul informatic, s poat rspunde cu uurin unor ntrebri complexe
legate de datele existente n baza de date.
Chiar dac afiarea direct a rezultatelor interogrilor nu se ridic la
rafinamentul i frumuseea celor prezentate prin intermediul formularelor i
rapoartelor, ele sunt utile att specialitilor n etapa de programare ct i
utilizatorilor finali. Acetia, nu de puine ori, au nevoie s interogheze baza de
date pentru a obine informaii ce nu au fost materializate de programatori
prin formulare i rapoarte i nu au nevoie ca rezultatele s fie prezentate ntr-o
form prea elaborat.
Access este un instrument software evoluat, care face ntr-adevr
posibil programarea vizual i dezvoltarea rapid a aplicaiilor.
Interogrile sunt utilizate pentru reunirea cmpurilor din mai multe
tabele n vederea unei prezentri agregate a informaiilor, pentru selectarea,
tergerea sau adugarea nregistrrilor n/din tabele dup anumite criterii,
pentru crearea sau actualizarea datelor.
Interogrile pot fi de tip:
Select Query (de selectare)
Total Query (de totalizare)
Crosstab Query (de tip cap de tabel cu mai multe intrri)
Make-Table Query (de creare tabele)
Update Query (de actualizare)
Append Query (de adugare)
Delete Query (de tergere).

Ultimele 4 tipuri se numesc i interogri de aciune, ele neavnd ca efect afiarea unor
informaii la ieire, ntr-o tabel virtual, ca celelalte de mai sus, ci ocupndu-se doar cu
modificarea datelor stocate n tabelele din seciunea Tables.
n exemplele care urmeaz considerm baza de date coninnd cele
patru tabele i relaiile de mai jos:

Coninutul celor 4 tabele se consider a fi urmtorul:

Ca i la tabele exist posibilitatea crerii interogrilor cu ajutorul


vrjitorilor specializai sau prin intermediul machetei de proiectare Design
View. Dup comutarea n panoul obiectelor Queries apare urmtoarea
fereastr:

Aici cele dou opiuni sunt:


1. Create query in Design View
2. Create query by using wizard
Semnificaia acestor opiuni este similar cu cea de la obiectele Tables.
De fapt prezena lor constituie un standard Access, deoarece ele se vor regsi
i n seciunile Forms i Reports.
Prima opiune, cea mai utilizat, este echivalent cu apsarea butonului
Design din ecranul anterior i atunci cnd este lansat n execuie prezint
urmtorul dialog (Show Table):
3

Dup selectarea tabelelor sau interogrilor dorite pentru a constitui baza


de prelucrare (materia prim) pentru query-ul curent, se apas butonul
<Add>. Selecia poate fi individual, contigu (cu Shift+clic) sau necontigu
(cu Ctrl+clic), fiind similar cu modalitatea de selecie din programul Windows
Explorer.
n exemplul nostru, s-a dorit o interogare prin care s obinem o list cu
numele angajailor i studiile acestora. n acest scop, nainte de apsarea
butonului <Add> s-au selectat (necontiguu folosind tasta Ctrl) cele dou
tabele necesare interogrii Angajai i Studii. Terminarea i nchiderea
lucrului cu acest dialog de adugare se marcheaz prin apsarea butonului
<Close>.
Urmtoarea fereastr afiat reprezint macheta de proiectare vizual a
obiectelor de tip query. Se observ c cele dou tabele au fost aduse automat
legate prin relaia care a fost definit i care exist n Relatioships:

n partea de jos a acestei machete se gsete un tabel vid (cu liniile:


Field, Table, Sort, Show, Criteria, or), n ale crui coloane vor trebui trase cu
mouse-ul prin drag & drop cmpurile din tabelele (din partea de sus), ale cror
valori vor fi afiate sau vor servi drept criterii de interogare. n cazul nostru vor
fi trase cmpurile Nume i Prenume din tabela Angajai i Denumire
studii din tabela Studii. n urma acestor aciuni macheta de proiectare va
arta astfel:

Dup apsarea butonului View (primul buton din bara de instrumente


vezi imaginea anterioar), pe ecran va fi afiat urmtoarea list cu
rezultatele interogrii:

Se observ c sunt afiate doar cele dou cmpuri (coloane) selectate.


Relaia dintre tabele
realizat prin intermediul cmpului cod studii, asigur posibilitatea afirii
studiilor corespunztoare pentru fiecare persoan chiar dac valorile acestui
cmp nu apar explicit.
Oricnd se poate reveni n macheta de proiectare prin apsarea primului
buton din bara de instrumente, care acum conine simbolul unui echer
albastru. Rezultatul interogrii se poate previzualiza naintea listrii sau se
poate lista efectiv la imprimant prin intermediul butoanelor corespunztoare
din toolbar (sunt butoanele standard care conin simbolurile imprimant i
lentil).
Continund exemplul, s presupunem c managerul de resurse umane
solicit o alt ordonare a listei. El cere ca lista s fie sortat dup studii i
anume nti cele superioare, apoi studiile medii i fr, iar n cadrul aceluiai
tip de studii numele persoanelor s apar sortate alfabetic. Deci n traducere
aceasta nseamn o tripl sortare. Prima va fi o sortare descresctoare
(descending) dup cmpul cod studii (deoarece 2=studii superioare, 1=studii
medii, 0=fr studii), a doua, o sortare cresctoare alfabetic (ascending) dup
cmpul Nume iar la eventuale nume identice (de familie) dup Prenume.
Cele trei cmpuri (cod studii i Nume, resp. Prenume) vor fi chei de
sortare n cadrul acestei interogri.
Ordinea de plasare a cheilor n interogare este important. Prioritatea
cheilor descrete de la stnga la dreapta (prima cheie, cea mai important,
cod studii va fi plasat cel mai la stnga n tabelul machetei de proiectare,
urmndu-i Nume i apoi Prenume).
Tabelul din macheta de proiectare ofer pentru sortare linia (opiunea)
Sort iar pentru marcajul cmpurilor (coloanelor) vizibile la consultarea
interogrii, linia Show cu controale de marcare (check box). Cmpurile n
dreptul crora exist bif pe linia Show, vor fi vizibile. Iniial toate cmpurile
au prezent bifa n dreptul lor pe linia Show (deci n mod implicit vor fi vizibile
toate coloanele interogrii) . n cazul nostru pentru c nu dorim s fie vizibile
6

valorile cmpului cod studii (0, 1 sau 2) vom debifa respectivul control de
marcare.
Macheta de proiectare va fi:

Dup apsarea butonului View (primul din stnga pe toolbar) rezultatul


interogrii va fi urmtoarea list dublu sortat:

S presupunem c se solicit o situaie mai complex care pe lng


nume, prenume i studii s afieze funcia deinut i data angajrii. Lista
trebuie s fie sortat n ordinea cresctoare a funciilor, apoi n cadrul fiecrei
funcii n ordine alfabetic dup numele persoanelor.
n acest caz, deoarece se solicit informaii despre funciile deinute,
este necesar adugarea n interogare a tabelei Funcii. Dialogul de adugare
Show Table se apeleaz prin apsarea butonului cu acelai nume
7

din bara de instrumente sau alegnd opiunea Show Table la clic


dreapta de mouse n zona de sus a ferestrei Query1 .
Acest dialog este:

Dup adugarea tabelei Funcii se trag n tabel prin drag & drop
cmpurile necesare interogrii i se stabilesc cheile de sortare. Macheta de
proiectare va arta astfel:

La apsarea butonului View va fi afiat urmtoarea list:

Un query poate fi salvat prin procedurile standard Save sau Save as care
au fost prezentate n capitolul anterior referitor la tabele. Orice query salvat
poate deveni o surs de date (similar unei tabele) pentru un alt query, un form
sau un report.
Orice interogare realizat n manier vizual sau cu ajutorul vrjitorilor
specializai se traduce de ctre Access ntr-o comand SQL (vizibil la
alegerea opiunii SQL View din meniul obinut la clic dreapta de mouse n
zona de sus a ferestrei Query, meniu prezentat mai jos:

.
Iat codul SQL creat automat de ctre Access pentru ultima interogare:
SELECT Angajati.Nume, Angajati.Prenume, Functii.[Denumire
functie], Studii.[Denumire studii], Angajati.[data ang]
FROM Studii INNER JOIN (Functii INNER JOIN Angajati ON Functii.
[Cod functie] = Angajati.[cod functie]) ON Studii.[cod studii] =
Angajati.[cod studii]
9

ORDER
BY
Angajati.[cod
functie],
Angajati.Nume,
Angajati.Prenume;
Trebuie remarcat cu aceast ocazie puterea Access-ului ca instrument
rapid de dezvoltare vizual a aplicaiilor, faptul c d posibilitatea unui numr
mare de persoane care nu sunt programatori de meserie s realizeze
prelucrri complexe ale datelor.
Interogrile create pn acum i utilizate pentru exemplificri fac parte
din interogrile de tip Select. Vom prezenta n continuare toate tipurile de
interogri puse la dispoziie de Access.

INTEROGRILE DE TIP SELECT


Interogrile de tip Select, la fel ca orice alt tip de interogri, presupun
existena n cadrul machetei de proiectare a:
tabelelor sau interogrilor care constituie sursa de date,
relaiilor dintre acestea motenite din Relationships
tabelului cu:
cmpurile,
cheile de sortare,
marcatorii de vizibilitate (Show),
criteriile (condiiile) de selecie.
Ele se pot utiliza pentru extragerea de date din una sau mai multe
tabele (query-uri) i efectuarea unor calcule.
Orice cod SQL al query-urilor de tip Select ncepe evident cu comanda
Select (vezi codul SQL din subcapitolul anterior).
Seleciile pot fi fcute i pe baza anumitor criterii utile pentru filtrarea
datelor. Linia Criteria din tabelul existent n macheta de proiectare este
destinat special acestui scop. Scrierea condiiilor complexe este asistat de
un vrjitor specializat care poate fi apelat apsnd opiunea Build din meniul
contextual al cmpului n care se scrie condiia, de pe linia Criteria.
Rezultatele interogrii de selecie pot fi prezentate sortate cresctor sau
descresctor dup unul sau mai multe cmpuri. Alegerea cmpurilor
respective se face n linia Sort. Dac de exemplu se dorete ca ultima list
(creat n subcapitolul anterior) s afieze doar persoanele cu studii medii,
atunci va fi necesar aplicarea unui asemenea filtru de selecie.
Macheta de proiectare va fi:

10

Se observ existena cifrei 1 pe linia Criteria n dreptul cmpului cod


studii. Aceast aciune simpl determin filtrarea i deci afiarea doar a
nregistrrilor care corespund condiiei (adic au cod studii=1 ceea ce
corespunde studiilor medii). Efectul aplicrii filtrului poate fi observat n
urmtoarea figur:

Lucrul cu funcia like


Pot exista i filtre multiple. De exemplu, este posibil ca n vederea
srbtoririi Sfntului Ion, s se solicite o list care s afieze doar persoanele
cu studii superioare (cod studii=2) care au inclus n prenume subirul Ion. n
acest sens se va utiliza o interogare de selecie avnd drept criteriu de
selecie pentru nume, funcia like (nsemnnd ca i) cu urmtorii parametrii:
like *Ion*.
Caracterul * (se citete orice), are aceeai semnificaie ca i la filtrele
pentru fiiere exemplu *.exe, *.*, etc . Deci, criteriul de selecie pentru nume
like *Ion* se poate citi: toate numele persoanelor care au orice ir de
caractere nainte de irul Ion i orice ir de caractere dup irul Ion.
Macheta de proiectare pentru aceast interogare va fi:

11

Rezultatul interogrii este:

Dac se dorete o list care s conin toate numele care ncep cu Ion,
comanda like din linia Criteria este: like Ion*. Invers, dac se dorete o
selecie pentru toate numele care se termin cu caracterele ion atunci
comanda like este: like *ion.
Iat n continuare efectul ultimei comenzi (like *ion).

Dac se dorete o interogare a persoanelor cu studii superioare care


conin subirul Ion fie n nume, fie n prenume, machete de cutare va fi cea
din figura de mai jos, care are completat att linia Criteria, cu o prim
condiie compus (prenumele s conin subirul Ion i persoana s aib studii
superioare cod studii=2), ct i linia Or (sau) cu cea de-a doua condiie
posibil compus (adic persoana s conin n nume subirul Ion i s aib
studii superioare).

12

Concatenarea irurilor de caractere


Sub Access irurile de caractere se pot concatena. Operatorul de
concatenare este &. Dac avem dou iruri: 123 i qwe atunci rezultatul
concatenrii lor prin intermediul operatorului de concatenare (123 & qwe)
este: 123qwe.
Seleciile anterioare bazate pe funcia like puteau fi scrise i astfel:
like * & ion & *
like ion & *
like * & ion

Dialogurile parametrizate
Exist situaii n care selecia nu se face de fiecare dat dup aceleai
caractere ce sunt coninute n nume. n acest caz, se las operatorului sarcina
de a introduce de la tastatur succesiunea de caractere ce sunt cutate. Acest
lucru se poate realiza scriind parametrizat criteriul de selecie n linia Criteria
pentru cmpul nume sau prenume. La fiecare lansare n execuie a
interogrii se afieaz o fereastr de dialog prin intermediul creia utilizatorul
specific irul de caractere ce constituie baza de selecie.
Textul afiat care va aprea n acest dialog ar putea fi:
Introducei caracterele incluse in nume:
n linia Criteria textul trebuie cuprins ntre paranteze drepte:
[Introducei caracterele incluse in prenume:]
Comanda like exhaustiv care prin intermediul parametrizrii va
cuprinde toate cazurile de selecie pentru cmpul prenume este:
Like "*" & [Introducei caracterele incluse n prenume:] & "*"
13

Secvena corespunztoare din macheta de proiectare este:

Dialogul care i va aprea utilizatorului la lansarea interogrii este:

Caset n care poate fi introdus orice subir de caractere cutat n prenume.

Lucrul cu funcia between


Dac se dorete o list care s prezinte o selecie a angajailor doar
pentru categoriile funciilor de efi atunci va mai trebui introdus n interogare
i tabela Categorii funcii. Coninutul acestei tabele este:

14

Se observ c n aceast tabel cmpul cod categorie pentru funciile


de efi are valori cuprinse ntre 2 i 4. Deci, pentru selecia categoriilor de
funcii de efi va fi necesar utilizarea funciei Between (ntre).
Macheta de proiectare pentru interogare este:

Rezultatul interogrii va fi:

INTEROGRILE DE TIP TOTALS


Alte modaliti de punere a problemelor de interogare sunt cele
referitoare la gruparea datelor din tabele dup diferite criterii i prezentarea
unor date statistice despre acestea. Pentru fiecare din grupele ce se formeaz
se pot calcula indicatori cum sunt:

Sum( ) suma valorilor unui cmp,


Count( ) numrul nregistrrilor din fiecare grup,
Avg( ) media valorilor unui cmp pentru fiecare grup ,
StDev( ) abaterea standard a valorilor unui cmp pentru fiecare grup,
Var( ) dispersia valorilor unui cmp pentru fiecare grup,
Min( ), Max( ) valoarea minim / maxim,
Last( ) - ultimul, First( ) prima / ultima valoare din grup pentru
cmpul respectiv.
15

S presupunem c avem urmtorul query de tip Select:

Oricnd un query de tip Select poate fi transformat ntr-un query de tip

Totals prin apsarea butonului


din bara de instrumente:
.
Dup apsarea butonului , macheta de proiectare va deveni:

Se observ n tabelul din partea de jos a machetei apariia liniei Total care
are nscris funcia Group By n dreptul fiecrui cmp. Dac dorim o situaie
care s ne prezinte cte persoane din fiecare categorie de funcii exist n
16

instituie, atunci nseamn c dorim o grupare a lor (Group By) dup categoria
de funcie i apoi o numrare (contorizare - Count) a acestora.
Pentru rezolvare, n dreptului cmpului cod persoana (deoarece dorim s
numrm persoane), pe linia Total vom face clic cu mouse-ul pe controlul
combo box disponibil, ceea ce va determina deschiderea urmtoarei liste
derulante din care vom alege funcia Count:

n dreptul cmpului cod angajat pe linia Total va aprea n loc de


Group By, funcia Count.
Rezultatul acestui query va fi:

Codul SQL generat automat de Access pentru aceast interogare este:


SELECT
[Categorii
functii].[Denumire
categorie
functie],
Count(Angajati.[Cod angajat]) AS [CountOfCod angajat]
FROM ([Categorii functii] INNER JOIN Functii ON [Categorii functii].
[cod categ functie] = Functii.[cod categorie functie]) INNER JOIN
Angajati ON Functii.[Cod functie] = Angajati.[cod functie]
GROUP BY [Categorii functii].[Denumire categorie functie], [Categorii
functii].[cod categ functie];
O alt ntrebare la care rspunsul ar fi uor de dat cu ajutorul
interogrilor de tip Totals ar fi: Ci angajai cu studii medii i ci cu studii
superioare sunt n instituie?.
Macheta de proiectare este:

17

Se observ c pe linia Criteria n dreptul cmpului cod studii s-a


nscris condiia >0. n acest fel se selecteaz doar persoanele cu studii
superioare i cele cu studii medii (persoanele fr studii au cmpul: cod
studii=0).
Rspunsul la ntrebare (rezultatul interogrii) va fi:

18

S-ar putea să vă placă și