Sunteți pe pagina 1din 22

TEMA 6 INTEROGRI N ACCESS

INTEROGRI N ACCESS

Construirea interogarilor

prin

QBE

6.1 Constituirea interogrilor prin QBE (Query) Interogarea (query) este o metod de obinere a informaiilor din baza de date. Ea conine cmpurile care vor fi afiate, tabele din care fac parte aceste cmpuri, criteriul pe care trebuie s-l ndeplineasc datele din cmpuri pentru a fi afiate i ordinea n care vor fi afiate. Folosind interogrile n Access putei s efectuai urmtoarele operaii: s combinai nregistrri din mai multe tabele ntr-o singur foaie de date; s selectai din mai multe tabele numai acele nregistrri care ndeplinesc un anumit criteriu; s selectai din tabele numai cmpurile care prezint un anumit interes; s sortai nregistrrile extrase din tabele ntr-o anumit ordine; s folosii rezultatul unei interogri ca surs de date pentru o nou nregistrare; s creai cmpuri calculate. Comparativ cu tabelul, interogarea prezint urmtoarele caracteristici: obinerea de informaii din baza de date prin folosirea cmpurilor calculate; numai vizualizarea datelor, fr posibilitatea de modificare a datelor din cmpuri; combinarea cmpurilor i a nregistrrilor din mai multe tabele (pot fi combinate cmpuri din maxim 16 tabele); gruparea nregistrrilor din interogarea dup valoarea unui cmp i calcularea de totaluri i subtotaluri pentru valorile numerice din cmpurile grupului; economie de spaiu de memorie, deoarece nu se memoreaz datele pe care le afiseaz ci numai modul n care ele pot fi preluate din tabelele bazei de date.

Meniul Query -lansare n execuie (Run); -vizualizarea tabelei (Show Table...); -tergerea tabelei (Remove Table); -interogaree de selecie (Select Query); -interogare ncruciat (Crosstab Query); -interogare tabelar (Make-Table Query...); -interogare de actualizare (Update Query); -interogare de adugare (Append Query...); -interogare de tergere (Delete Query); -alte comenzi SQL (Specific SQL); -definirea parametrilor (Parameters...);

interogri aciune (action queries) - se folosesc pentru a crea un nou tabel sau pentru a face actualizri n tabelul bazei de date. Aciunile executate de aceste interogri sunt ireversibile asupra bazei de date. Exist urmtoarele tipuri de interogri de aciune: interogri de creare (make-table queries) creeaz un tabel pornind de la o parte din datele dintr-un tabel sau din mai multe tabele; interogri de adugare (append queries) - adaug la sfritul unui tabel sau al unor tabele un grup de nregistrri dintr-un tabel, respectiv din alte tabele; interogri de tergere (delete queries) terg dintr-unul sau mai multe tabele o nregistrare sau un grup de nregistrri care ndeplinesc un anumit criteriu; interogri de modificare (update queries) modific datele dintr-un cmp n toate nregistrrile sau ntr-un grup de nregistrri dintr-un tabel sau din mai multe tabele.

6.1.1 Schema utilizat de o cerere.

6.1.1 Schema utilizat de o cerere.Crearea unui obiect de tip interogare Vom prezenta ambele moduri de construire a interogrilor bazei de date Fiind un obiect Access, inceperea crerii interogrii se realizeaz n fereastra Database prin activarea fiei Query (specificnd astfel tipul de obiect Access pe care dorim s l crem) i apoi apsarea butonului New, sau selectnd din meniul Insert opiunea Query. Access ofer mai multe modaliti de creare a cererilor. Aceste modaliti sunt enunate n caseta de dialog New Query, afiat ca urmare a iniierii operaiei de creare a cererii: - modul grafic de proiectare, Design View (proiectarea interogrilor utiliznd interfaa grafic este cunoscut sub numele Query By Example); - utilizarea asistentului pentru cereri simple, Simple Query Wizard; - utilizarea asistentului pentru cereri ncruciate, Crossab Query Wizard; - utilizarea asistentului pentru cutarea nregistrrilor duplicat, Fin Duplicaes Query Wizard; - utilizarea asistentului pentru cutarea nregistrrilor care nu au corespondent n doutabele, Find Unmatched Query Wizard.

Pentru crearea unei cereri de selecie se alege opiunea Design View din caseta New Query sau a opiunii Create query in design View , aa cum se observ n figura urmtoare:

. Dup alegerea modului de creare, se trece la selectarea tabelelor surs din care se vor extrage datele. Caseta Show Table, din figura de mai jos ofer posibilitatea precizrii sursei de date pentru construirea cererii.

Exemplu de camp calculat intr-o interogare Pentru a aduga un cmp calculat ntr-o interogare se tasteaz numele acestuia ntr-o nou coloan din grila Query Design, se adaug dou puncte: i apoi se completeaz expresia dorit. Exemplu: Interogarea din Figura de mai sus calculeaz data limit pn la care trebuie onorat fiecare comand.

Fereastra Select Query (de mai sus ) este mprit n dou zone: a. Zona superioar, n care se vizualizeaz tabelele/interogrile surs de date precum i relaiile definite ntre acestea; b. Grila Query Design structurat astfel: Linia Field: rezervat pentru definirea numelui atributului selectat; Linia Table: destinat precizrii sursei de date; Linia Sort: permite precizarea sensului sortrii pentru atributul din coloana respectiv; Linia Show: permite inhibarea afirii realizrilor cmpului respectiv; Linia Criteria: ofer posibilitatea precizrii criteriilor de selecie prin introducerea expresiilor Access corespunztoare; Liniile Or: permit precizarea mai multor criterii de selecie n cazul expresiilor Access utiliznd operatorul OR. Odat specificat sursa de date, definirea interogrii de selecie presupune parcurgerea urmtorilor pai:

6.1.2Proiectarea unei interogri de selecie

n figura de mai sus se prezint modul n care s-a definit interogarea de selecie prin care se realizeaz afiarea stocului pentru produsul faina. Sursa de date a cererii este reprezentat de trei tabele ale bazei de date: Furnizori, Produse i respectiv Stocuri. In privina cererilor de selecie care au ca surs mai multe tabele trebuie precizat c, n mod implicit, Access utilizeaz operaia de echicompunere, fapt ce conduce la selectarea nregistrrilor ce au corespondent n ambele tabele (interogri de tip Inner Join). De exemplu, dac se realizeaz o cerere asupra tabelelor Produse i Stocuri, fr a se specifica vreun criteriu, n lista rezultatelor nu vor figura dect produsele pentru care exist ceva n stoc. Dac se dorete realizarea unei interogri de tip Outer Join (folosind operaia de compunere extern) se va efectua dublu click asupra liniei de legtur dintre tabele i, n caseta Join Properties (ca n figura de mai jos ) se poate preciza selectarea tuturor nregistrrilor din una dintre tabele, indiferent dac au sau nu corespondent n cealalt tabel. Pentru realizarea operaiei de compunere pe baza unei relaii de inegalitate (<, >, o) a cmpurilor de legtur dintre tabele se poate folosi limbajul SQL. O cerere ce are ca surs dou tabele ntre care nu exist nici o relaie va avea ca rezultat produsul cartezian al nregistrrilor din cele dou tabele.

Executarea interogrii de aciune se poate realiza n unul din urmtoarele moduri: Utiliznd butonul Query View
(primul n bara de instrumente); Utiliznd butonul Run

din bara de instrumente; Utiliznd opiunea Datasheet din meniul View; Utiliznd opiunea Run din meniul Query. In Figura de mai jos este redat rezultatul executrii cererii anterior proiectate.

6.1.3 Cereri cu cmpuri calculate n interogri de selecie

Interogrile de selecie pot cuprinde i cmpuri calculate. Aceste cmpuri returneaz, la executarea interogrii, valoarea expresiilor Access asociate lor. Exemplu de camp calculat intr-o interogare Pentru a aduga un cmp calculat ntr-o interogare se tasteaz numele acestuia ntr-o nou coloan din grila Query Design, se adaug dou puncte: i apoi se completeaz expresia dorit. Exemplu: Interogarea din Figura de mai sus calculeaz data limit pn la care trebuie onorat fiecare comand . Expresii i operatori pentru interogri Elementele unei expresii Access sunt: - Operatori', - Constantele; - Identificatorii; - Funciile. Operatorii utilizai n construirea expresiilor Access se pot clasifica astfel: : Aceti operatori returneaz valorile logice True i False., Excepie reprezint cazul n care unul dintre operatori are valoarea Null i deci, orice comparare va returna valoarea Null.

Aceti operatori returneaz valorile logice True i False., Excepie reprezint cazul n care unul dintre operatori are valoarea Null i deci, orice comparare va returna valoarea Null. Logici: And, Or, Not. Se pot utiliza pentru construirea expresiilor Access compuse. De concatenare a irurilor de caractere: +, &. Operatori de identificare Operatorii de identificare , ! i . , sunt specific programului Access. Operatorul ! se mai numete i operatorul bang. Ei sunt folosii n urmtoarele situaii:

Combinarea denumirilor claselor de obiecte i a denumirilor obiectelor pentru a selecta un anumit obiect sau a proprietii unui obiect. :

6.1.4 Cererii cu parametrii. Parametrizarea interogrilor


Interogrile de selecie prezentate pn n acest moment returneaz ntotdeauna tuplurile din tabelele surs care corespund unei anumite cereri fixe: clienii trebuie s aib domiciliul n Bucureti sau Ploieti iar data livrrii s fie anterioare datei curente (vezi exemplul de interogare de selecie prezentat ntr-un paragraf anterior). De multe ori ns, ar fi util o interogare al crei criteriu de selecie s poat fi precizat la nivel general i particularizat de utilizator n funcie de necesitile sale de informare (precizndu-se concret ce realizri ale atributului sunt cutate) chiar n momentul execuiei cererii. O astfel de interogare se caracterizeaz prin faptul c n grila Design, pe coloana dorit, n linia Criteria, se va preciza ntre paranteze drepte un mesaj ce urmeaz a fi afiat la executarea cererii permind ca utilizatorul s introduc criteriul de selecie dorit. Parametrii pot fi utilizai nu doar n rndul de criterii, ci i n formulele cmpurilor calculate, dac se dorete introducerea unui termen variabil n expresii. Practic n aceste interogri se dorete ca expresia (criteriul) din interogare s fie variabil de la o execuie la alta se poate crea o interogare cu parametru. n acest caz criteriile sunt introduse n caseta de dialog Enter Parameter Value. Se deschide interogarea n mod design view, i n cmpul criteria se introduce un text ntre paranteze drepte.

6.2 Propietile cererii

Cererile de selectie sunt obiecte Access care solicita baza de date sa raspunda anumitor intrebari formulate de utilizator. Crearea cererilor de selectie se face in felul urmator: Selecteaza fisa de optiuni QUERIES din fereastra DATABASE. CERERE DE SELECTIE PARAMETRICE Cererile de selectie parametrice sunt cereri in care conditia se poate schimba de la o executie la alta. In conditie pot fi introduse campuri inexistente pentru care sistemul cere valori. In cererea de mai jos se pot selecta salariatii de o anumita functie

Funciile agregate.

Utilizarea funciilor agregate Funciile agregat acioneaz asupra unui set de nregistrri, genernd un singur rezultat pentru grup. Utilizarea funciilor agregat trebuie s respecte sintaxa: SELECT [coloana,] functie_grup(coloana) FROM tabel [WHERE conditie] [ORDER BY coloana] Exemple de funcii agregate folosite n limbajul SQL sunt urmtoarele: -funcia count -funcia avg -funia min -funcia max -funcia sum

Funcia COUNT

Funcia COUNT Calculeaz numrul de nregistraii returnate de o interogare, numr cte valori diferite de NULL are o coloan specificat sau cte linii are tabelul; COUNT(*) returneaz numrul de linii dintr-un tabel. Count(expr) Substituentul expr reprezint o expresie ir de caractere identificnd cmpul care conine datele care se vor numra sau o expresie care efectueaz un calcul utiliznd datele din cmp. Operanzii din expr pot include numele unui cmp din tabel sau o funcie (care poate fi intrinsec sau definit de utilizator, dar nu alt funcie agregat SQL). Se pot numra orice fel de date, inclusiv text.

Funcia Count se poate utiliza pentru a calcula numrul de nregistrri dintr-o interogare subordonat. De exemplu, funcia Count se poate utiliza pentru a numra comenzile expediate ctre o anumit ar. Deci poate efectua un calcul pe un cmp, funcia Count numr pur i simplu nregistrrile. Nu conteaz ce valori sunt stocate n nregistrri. Funcia Count nu numr nregistrrile care au cmpuri Null dect dac expr este metacaracterul asterisc (*). Dac se utilizeaz un asterisc, Count calculeaz numrul total de nregistrri, incluzndu-le pe acelea care conin cmpuri Null. Funcia Count(*) este cu mult mai rapid dect Count([Nume coloan]). Asteriscul nu se ncadreaz ntre ghilimele (' '

Funcia AVG

Funcia AVG calculeaz media aritmetic a valorilor din coloana specificat ca argument al funciei. Avg(expr) Substituentul expr reprezint o expresie ir de caractere identificnd cmpul care conine datele numerice pentru care se va calcula media sau o expresie care efectueaz un calcul utiliznd datele din acel cmp. Operanzii din expr pot include numele unui cmp din tabel, o constant sau o funcie (care poate fi intrinsec sau definit de utilizator, dar nu una dintre celelalte funcii agregate SQL). Media calculat de Avg este media aritmetic (suma valorilor mprit la numrul de valori). Funcia Avg se poate utiliza, de exemplu, pentru a calcula costul mediu de transport.Funcia Avg nu include nici un cmp Null n calcul. Funcia Avg se poate utiliza ntr-o expresie de interogare i n proprietatea SQL a unui obiect QueryDef sau la crearea unui obiect Recordset pe baza unei interogri SQL. Exemplu: S se calculeze venitul mediu al angajailor firmei? close databases clear open database firma SELECT AVG(salariu + NVL(comision,0) ) as Venit_mediu FROM ang close all

Funcia MIN

Funcia MIN returneaz minimul valorilor din coloana specificat ca argument al funciei. Exemplu: S se afieze salariul minim al angajailor departamentului VANZARI? close databases clear open database firma SELECT MIN(salariu) as Salariu_minim, nume; FROM ang a INNER JOIN depart d; ON a.nrdepart= d.nrdepart; WHERE d.numedepart='VANZARI' close all

Funcia MAX

Funcia MAX returneaz maximul valorilor din coloana specificat ca argument al funciei. Exemplu: S se citeasc de la tastatur o variabil x de tip CHAR. S se afieze salariul maxim al angajailor din localitatea x. close databases clear open database firma @10,10 say 'Introduceti localitatea' @11,10 get x default space(14) read x = upper(alltrim(x)) use depart locate for x = upper(alltrim(loc)) if found() nr= nrdepart use ang locate for nr=nrdepart if found()

nr= nrdepart use ang locate for nr=nrdepart if found() SELECT MAX(salariu) as Salariul_maxim_din_,; loc as Localitatea FROM ang a INNER JOIN depart d; ON a.nrdepart= d.nrdepart; WHERE upper(alltrim(loc)) = x else SELECT 'Nu exista angajati in ', loc as localitatea; FROM depart WHERE upper(alltrim(loc)) = x endif else @12,10 say 'Nu exista localitatea' @12,35 say x endif close all

Funcia Sum

Funcia Sum returneaz suma unui set de valori coninute ntr-un anumit cmp dintr-o interogare. Sum(expr) Substituentul expr reprezint o expresie ir identificnd cmpul care conine datele numerice de adunat sau o expresie care efectueaz un calcul utiliznd datele din acel cmp. Operanzii din expr pot include numele unui cmp din tabel, o constant sau o funcie (care poate fi intrinsec sau definit de utilizator, dar nu una dintre celelalte funcii agregate SQL). Funcia Sum face totalul valorilor dintr-un cmp. De exemplu, se poate utiliza funcia Sum pentru a determina costul total al cheltuielilor de transport. Funcia Sum ignor nregistrrile care conin cmpuri Null . Urmtorul exemplu arat modul de calcul al sumei pentru produse din cmpurile PreUnitar i Cantitate: SELECT Sum(PreUnitar * Cantitate) AS [Venit total] FROM [Detalii comand]; Funcia Sum se poate utiliza n expresii de interogare. Aceast expresie se poate utiliza i n proprietatea SQL a unui obiect QueryDef sau la crearea unui Recordset pe baza unei interogri SQL.

Sustinatori

Ungureanu Silvia Maria Stancu Florin Marinescu Marius Ilie Mincu Bogdan Vasilescu Alin

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