Sunteți pe pagina 1din 84

SUPORT PENTRU ACTIVITATI DE CURS

ȘI LABORATOR

Prof. univ. dr. Alexandru Manole


amanole@artifex.org.ro
Precizări
 Sistemul de gestiune a bazelor de date suport utilizat pentru aplicațiile prezentate la
curs și laborator este MicrosoftTM Access® versiunea 2019.
 MicrosoftTM Windows®, MicrosoftTM Access® și Microsoft TM SQL Server ®
sunt mărci înregistrate ale Microsoft Corporation.
 Capturile de ecran sunt preluate cu permisiunea Microsoft TM.
 Aplicațiile propuse sunt construite în scop didactic.
 Tema 5 Cereri de interogare din structura cursului corespunde cu Tema 3 Cereri de
interogare din structura dezbaterilor de la laborator.
 La laborator, aceasta este ultima temă.
 La curs, ultima temă este dedicată rezolvării, cu titlu de recapitulare, a unei
aplicații.
 Având în vedere convergența temelor, documentele includ și aplicații ale
instrumentelor descrise.
TEMA 5.
Cereri de interogare

5.1. Fereastra QBE – prezentare generală.


5.2. Reprezentarea atributelor. Atribute preluate și
atribute calculate. Formule și funcții (simple și de grup).
5.3. Sortarea datelor.
5.4. Criterii de selecție. Parametri
5.5. Interogări de acțiune.
5.6. Interogări de analiză încrucișată
Cereri de interogare
5.1. Fereastra QBE. Prezentare generală
 Interogarea datelor permite, în primul rând, extragerea și prelucrarea
datelor, în vederea obținerii datelor de ieșire și prezentării acestora
către beneficiari.
 Această misiune revine interogărilor de tip selecție.
 Rezultatele pot fi prezentate sub formă tabelară, în formulare sau în
rapoarte.
 Alături de interogările de selecție, există și interogările de acțiune,
care execută anumite sarcini determinate de acțiunile asociate.
Acestea au la bază interogări de selecție, care delimitează
înregistrările care vor fi supuse acțiunilor respective.
 Un caz particular de interogări de selecție se referă la interogările de
analiză încrucișată.
 În SGBD-ul utilizat, echivalentul pentru interogare (sau cerere de
interogare) este query, plural queries.
 Etimologic, originea este latinescul quaerere: a căuta, a cere.
Cereri de interogare
 Interogarea de selecție – Select Query asigură obținerea datelor
de ieșire, precum și sursa de date/înregistrări pentru celelalte
tipuri de interogări.
 Un instrument pentru crearea interogărilor de selecție este
fereastra QBE (Query by Example), echivalentul pentru
interogări al instrumentelor Design asociate celorlalte obiecte
MicrosoftTM Access®.
 QBE permite vizualizarea rapidă a rezultatelor interogării,
conform setărilor din cadrul propriei ferestre.
 • Instrumentul QBE se accesează prin butonul Query Design
din meniul Create:
Cereri de interogare
 Pentru aplicații ale instrumentelor de interogare a datelor, se va
utiliza baza de date VANZARI, al cărei model fizic este
următorul:
Cereri de interogare
 Înainte de deschiderea QBE, butonul Query Design afișează în
prim-plan fereastra Show Table, care solicită definirea
obiectelor sursă pentru noua interogare: tabele și/sau alte
interogări din care se preiau atribute / date / înregistrări.
 Cele trei controale TAB afișează lista tabelelor (Tables),
interogărilor (Queries), respectiv lista tabelelor și interogărilor
din baza de date (Both):
Cereri de interogare
 Pentru prima interogare, vom utiliza
tabelele CLIENTI, FACTURI și
FACTURIVANZARE.
 Fereastra QBE are două
componente:
 Zona pentru obiecte sursă;
 Grila de proiectare (Design
Grid).
 Se pot adăuga obiecte sursă noi,
prin butonul Add Tables, de pe bara
de instrumente, secțiunea Query
Tools – Query Setup.
 Eliminarea unui obiect sursă:
comanda Remove Table din meniul
contextual al obiectului sursă.
Cereri de interogare
 În zona pentru obiecte sursă, sunt prezentate obiectele selectate
și legăturile dintre ele.
 Legăturile sunt preluate din legăturile permanente
(Relationships) și pot fi modificate în scopul interogării datelor.
Pot fi definite, de asemenea, legături temporare noi (de
exemplu, pentru obiectele sursă de tip interogare).
 Vom exemplifica modul de configurare a legăturilor temporare
după prezentarea grilei de proiectare, pentru a observa efectele
diferitelor opțiuni asupra rezultatului interogării.
 Rezultatul interogării de selecție are aceeași structură ca și un
tabel: atribute, date, înregistrări, dar depinde de datele/obiectele
sursă. Orice rezultat are un caracter temporar și nu este inclus
în modelul fizic al datelor.
 Fiecare coloană corespunde unui atribut inclus în interogare.
Grila de proiectare include mai multe componente, marcate
prin etichete la capătul rândurilor.
Cereri de interogare
 Field: atribute preluate din obiectele sursă sau atribute calculate
în cadrul interogării.
 Pentru atributele preluate, se înscrie numai denumirea.
 Pentru atributele calculate, numele este însoțit de formula de
calcul, prin sintaxa Nume_atribut : Formula de calcul
 Simbolul „:” înlocuiește semnul = în definirea atributelor și
formulelor de calcul
 Se respectă convenția „elementul din stânga egalului preia
valoarea de la componenta din dreapta egalului”.
 Preluarea atributelor se poate realiza prin dublu click pe
denumirea atributului din obiectul sursă, prin drag and drop
asupra denumirii atributului către o coloană din grila de
proiectare sau prin selectarea denumirii atributului din lista
derulantă asociată unui câmp Field.
 Simbolul * se referă la întreaga înregistrare din obiectul sursă
respectiv. Lista derulantă include toate atributele din
obiectele sursă.
Cereri de interogare
 Table: denumirea obiectului sursă.
 Rolul acestui instrument este important atunci când un atribut se
regăsește în mai multe obiecte sursă, cu aceeași denumire (cheile
primare / externe, de exemplu) și utilizatorii doresc definirea precisă a
sursei. Pentru atributele calculate, nu există obiect sursă.
 Sort permite ordonarea înregistrărilor după valorile unuia sau
mai multor atribute. Sortarea se realizează crescător
(Ascending) sau descrescător (Descending), alfabetic sau
numeric, după tipul datelor atributului la care se aplică (datele
de tip Long Text sau OLE Object nu pot fi utilizate pentru
sortare).
 Dacă se aplică opțiuni de sortare pentru mai multe atribute, ordinea de
prioritizare a acestor opțiuni este de la stânga la dreapta, așa cum
atributele sunt poziționate în grila de proiectare.
 Fereastra de pe următorul slide afișează o parte din rezultatul interogării
pentru atributele (cu sortare implicită după primul atribut – acesta este
cheie primară):
Cereri de interogare

Pentru vizualizarea rezultatului interogării, se utilizează butonul View de pe bara de


instrumente (primul buton din stânga) sau opțiunea Datasheet View din lista
asociată butonului.
Cereri de interogare
• După aplicarea opțiunii de sortare descrescător după CodClient și crescător
după Pretfact:
Cereri de interogare
 Show: casetă de validare.
 Dacă opțiunea este validată, atributul și valorile sale sunt incluse în rezultatul interogării;
 Dacă nu, atributul și valorile sale sunt omise la formarea rezultatului;
 Pentru un atribut care nu este utilizat la sortare, criterii, sau nu este calculat, caseta Show
nevalidată implică eliminarea atributului din grila de proiectare, nu numai din rezultat.
 Criteria: criterii de selecție (o expresie logică prin care se verifică valorile atributului
la care se aplică , al cărei rezultat are semnificație de adevărat/fals). În rezultatul
interogării sunt incluse (filtrate) numai înregistrările care conțin date pentru care
criteriul de selecție este adevărat.
 Un criteriu de selecție este format din trei elemente. Se pot aplica mai multe criterii
de selecție într-o interogare, dar fiecare criteriu va fi construit din cele trei
componente:
 Un atribut la valorile căruia se aplică;
 Un tip de criteriu (sunt patru tipuri);
 Un set de valori de referință, corespunzător tipului de criteriu aplicat. Valorile de referință,
implicit, sunt case insensitive (nu se face diferența între litere mari/mici). Valorile de
referință sunt încadrate între ghilimele (textele), respectiv caractere # (datele
calendaristice). Aceste caractere speciale nu trebuie tastate de utilizator decât atunci când
pot să apară confuzii.
Cereri de interogare
 Configurări pentru legăturile temporare între sursele de date
 În partea de sus a ferestrei QBE (zona pentru surse de date) se pot configura legături
temporare între acestea, care să funcționeze doar în contextul acelei interogări;
 Legăturile se definesc pe baza unor atribute;
 Pentru configurarea unei astfel de legături sunt necesare anumite corelații între atributele
de legătură: relație de tip cheie externă (inclusiv candidat) – cheie primară (inclusiv
candidat), un set de valori comune;
 Accesul la fereastra de configurare presupune efectuarea unui click dreapta pe linia de
legătură și accesarea comenzii Join Properties din meniul contextual.
Cereri de interogare
 Opțiunea 1 include în rezultatul interogării doar înregistrările pentru care valorile cheii
Left Column Name au corespondent în mulțimea de valori a cheii Right Column Name;
 Atunci când atributele de legătură sunt chei definite ca atare, Left corespunde cheii
primare;
 Opțiunea 2 afișează toate înregistrările care conțin date din tabelul Left Table Name și
numai acele valori din Right Table Name care există. Acolo unde nu există valori
corespondente, se afișează valori nule (căsuțe goale);
 Opțiunea 3 este inversul opțiunii 2. În cazul legăturilor dintre chei definite ca atare,
opțiunea 3 este identică opțiunii 1, din cauza restricției de integritate referențială.
 Definirea opțiunilor 2 sau 3 conduce la afișarea în zona de surse de date a unor săgeți de la
tabelul Left către tabelul Right.
 Un exemplu de aplicare a opțiunii 2 (pentru tabelele de mai jos) este redat pe slide-ul
următor.
Cereri de interogare

 Se poate observa că există înregistrări în care nu apar date din tabelul Right al legăturii.
 Se recomandă ca orice sursă de date dintr-o interogare să participe la cel puțin o legătură.
 În caz contrar, rezultatul interogării va fi format din înregistrări formate nu prin alăturarea
datelor corelate (conform legăturii), ci prin produs cartezian, ceea ce conduce la
nerespectarea corelațiilor dintre datele preluate din surse diferite.
Cereri de interogare
5.2. Reprezentarea atributelor - atribute calculate. Formule și
funcții (simple și de grup).
 Pentru calcule, respectiv obținerea de valori prin prelucrare, este necesar ca acestea să fie
asociate cu atribute, la fel ca datele/atributele din modelul fizic inițial.
 Notația pentru un atribut calculat se înscrie în linia Field:
Nume_atribut : Procedura de calcul
 Procedura de calcul poate fi o formulă de calcul sau o funcție.
 Formulele și funcțiile se pot combina între ele, astfel încât o formulă să fie parte a unei
funcții, iar o funcție parte a unei formule.
 Vom aborda mai întâi formulele de calcul. Într-o formulă se pot utiliza:
 Operații aritmetice (adunare, scădere, înmulțire, împărțire, împărțirea fără rest, modul,
ridicarea la putere);
 Valori ale atributelor (în acest caz, în formulă apare denumirea atributului);

 Valori concrete, care rămân constante pentru toate prelucrările prin formulele
respective.
 De exemplu, calculul valorii fără TVA corespunzătoare datelor din baza de date utilizată
în exemplele anterioare presupune înscrierea formulei din figura următoare în prima
căsuță Field liberă din grila de proiectare:
Cereri de interogare

 Efectul formulei este următorul: pentru fiecare înregistrare, se va înmulți valoarea


atributului cantfact cu valoarea atributului pretfact. Toate rezultatele vor fi stocate într-un
nou atribut, Valoare_fara_TVA, care face parte din rezultatul interogării, prezentat, în
extras, mai jos:

 Se observă că valoarea fără TVA nu este afișată în format Currency, ceea ce impune
definirea explicită a acestei proprietăți.
Cereri de interogare
 Prin comanda Properties din meniul contextual al atributului (în cadrul grilei de
proiectare), se afișează caseta de proprietăți:

 Aceste proprietăți sunt similare celor de la definirea atributelor în cadrul tabelelor, dar, așa
cum se poate observa, nu toate proprietățile sunt disponibile aici.
 Din lista Format, dacă se alege opțiunea Currency, rezultatul interogării este afișat astfel:
Cereri de interogare
 Pentru a exemplifica utilizarea unei valori concrete într-o formulă, vom calcula valoarea
TVA-ului aferent datelor noastre.
 Vom aplica formula:

 După aplicarea formatului Currency pentru noul atribut (TVA), rezultatul interogării
devine:
Cereri de interogare
 Pentru calculul valorii cu TVA, vom aplica formula:

 Rezultatul interogării este următorul:

 Avem în vedere că, în formulele de calcul prezentate, parantezele drepte încadrează


denumirea unui atribut.
Cereri de interogare
 O altă operație, dedicată șirurilor de caractere, este concatenarea: șirurile concatenate sunt
unite într-un singur șir, în ordinea în care apar în formula operatorului (operatorul de
concatenare este &).
 Exemplu: se poate explicita numărul facturii într-un nou atribut, prin adăugarea, înainte de
număr, a cuvântului „Factura” urmat de un spațiu, pentru ușurința lecturii.
Factura: "Factura" & " " & [Facturi].[Nrfactura]
 Rezultatul aplicării operatorului (ultima coloană):
Cereri de interogare
 Vom vorbi în continuare despre funcțiile aplicabile în interogări.
 Funcțiile pot fi simple sau agregate (de grup).
 Considerând notația funcției ca:
Rezultat : Funcție (Argument)
 Pentru o funcție simplă, argumentul (datele de intrare) este reprezentat de o singură valoare.
 Pentru o funcție agregată, denumită și de grup, argumentul (datele de intrare) este reprezentat
de o mulțime de valori (se poate spune și grup de valori, de unde și denumirea de grup).
 Pentru ambele tipuri de funcții, rezultatul este reprezentat de o singură valoare.
 Vom prezenta câteva funcții simple.
 Una dintre cele mai utile funcții este funcția de test condițional IIf. Structura funcției este:
Rezultat: IIf(condiție, Valoare_A, Valoare_F)
 Rezultat: denumirea atributului care va stoca rezultatele funcției;
 Condiție: o expresie logică (poate fi adevărată sau falsă);
 Valoare_A: rezultatul funcției (o singură valoare) în cazul în care condiție este adevărată;
 Valoare_F: rezultatul funcției (o singură valoare) în cazul în care condiție este falsă.
Cereri de interogare
 Pentru exemplificare, vom testa valorile inclusiv TVA din interogarea exemplu, aplicând
următoarele criterii:
 Fiecare valoare mai mică decât 500 va fi considerată valoare redusă;

 Fiecare valoare mai mare sau cel puțin egală cu 500 va fi considerată valoare OK.

 Funcția IIf va avea următoarea structură (fereastra Expression Builder din meniul
contextual al grilei de proiectare):
Cereri de interogare
 Rezultatul cererii de interogare este prezentat în continuare:
Cereri de interogare
 În situația în care trebuie evaluate mai mult de două cazuri posibile, este necesară aplicarea funcției
în varianta imbricată (funcție în funcție), respectiv o funcție devine parametru al altei funcții.
 Numărul de funcții imbricate este egal cu numărul de cazuri posibile minus unu.
 3 cazuri posibile: 3-1 (2) funcții imbricate.
 Dezvoltând exemplul anterior, vom evalua valoarea inclusiv TVA astfel:
 Fiecare valoare mai mică decât 500 va fi considerată valoare redusă;

 Fiecare valoare mai mare sau cel puțin egală cu 500, dar mai mică decât 1000 va fi considerată
valoare medie;
 Fiecare valoare mai mare sau cel puțin egală cu 1000 va fi considerată valoare mare.

 Se aplică funcția:
Evaluare_2: IIf([Valoare_totala]<500;"Valoare redusa";IIf([Valoare_totala]<1000;"Valoare
medie";"Valoare OK"))
 Observăm că ultima funcție tratează două cazuri, de aici corelația descrisă mai sus (minus unu).
 Numărul parantezelor de închidere este egal cu numărul funcțiilor imbricate.
 Rezultatul interogării este reprezentat în continuare.
 Imbricarea funcționează și pentru funcții diferite.
Cereri de interogare
Cereri de interogare
 O altă funcție utilă este IsNull. Această funcție logică verifică valorile nule și produce
rezultatul Adevărat (reprezentat implicit prin valoarea -1) pentru o valoare nulă și Fals
(reprezentat implicit prin valoarea 0) pentru o valoare non-nulă.
 Interogarea de mai jos produce și valori nule:
Cereri de interogare
Cereri de interogare
 Vom testa valorile nule ale atributului IDMagazin prin expresia:
Evaluare_3: IsNull([IDMagazin])
 Rezultatul interogării (s-a definit formatul Yes/No pentru noul atribut):
Cereri de interogare
 Vom înlocui valorile nule ale atributului IDMagazin prin expresia:
Evaluare_4: IIf(IsNull([IDMagazin]);"Valoare eronata";[IDMagazin])
Rezultatul interogării:
Cereri de interogare
 Deși cheia externă poate primi valori NULL (acestea nu încalcă integritatea
referențială: NULL nu este o valoare), acest lucru nu este permis în utilizarea normală
a bazei de date, ci numai în mediu de testare, didactic, exemplificare etc.
 Un astfel de exemplu – didactic – vizează pregătirea datelor din baza de date pentru
îndeplinirea celei de-a treia funcțiuni a sa: Business Intelligence – Data Mining.
Apariția acestei erori poate fi justificată prin preluarea datelor din surse non-baze de
date.
 Expresia anterioară este un exemplu de utilizare a funcțiilor imbricate: s-au utilizat
concomitent funcțiile IIf și IsNull.
 Funcția păstrează valorile non-nule, dar înlocuiește valorile nule cu textul „Valoare
eronata”.
 Funcția Len „măsoară” lungimea unui șir de caractere și returnează numărul de caractere
din șir.
 Exemplu:
Lungime: Len([Evaluare_4])
 Rezultatul este prezentat în slide-ul următor.
Cereri de interogare
Cereri de interogare
 Funcția Left(atribut,i) „extrage” un număr de i caractere din valoarea atributului atribut,
începând de la stânga. Parametrul i reprezintă un număr natural.
 Exemplu, funcția:
Stanga: Left([codprodus];2)
extrage primele două caractere de la stânga din valoarea atributului codprodus:
Cereri de interogare
 Funcția Right(atribut,i) „extrage” un număr de i caractere din valoarea atributului atribut,
începând de la dreapta. Parametrul i reprezintă un număr natural.
 Exemplu, funcția:
Dreapta: Right([facturivanzare].[Nrfactura];2)
extrage primele două caractere de la dreapta din valoarea atributului Nrfactura, din tabelul
FACTURIVANZARE:
Cereri de interogare
 Funcția Date() returnează data sistemului.
 Se pot face operațiuni cu intervale de timp, măsurate în zile, unde lungimea unui interval
este reprezentată prin numărul de zile din cadrul acestuia.
 Formula
Zile:Date()-Datafactura
calculează numărul de zile scurse de la data facturii.
Cereri de interogare
Funcții agregate
 Pentru o funcție agregată, denumită și de grup, argumentul (datele de intrare) este
reprezentat de o mulțime de valori (se poate spune și grup de valori, de unde și denumirea
de grup). Rezultatul este reprezentat de o singură valoare.
 Acestea se pot aplica în două variante:
 Fără grupare;

 Cu grupare.

 Prima variantă presupune definirea funcției de grup dorite pentru un anumit atribut și se
aplică la toate valorile atributului.
 A doua variantă se aplică pentru submulțimi de valori ale atributului, determinate prin
grupare.
 Funcțiile de grup sunt descrise în lista de mai jos:
Cereri de interogare
 Sum: calculează suma unui grup de valori numerice.
 Avg: calculează media aritmetică.
 Min: extrage valoarea minimă.
 Max: valoarea maximă.
 Count: numără valorile dintr-un grup.
 StDev: deviația standard (indicator statistic) pentru valorile din grup.
 Var: varianța (indicator statistic) pentru valorile din grup.
 First: returnează valoarea din prima înregistrare.
 Last: returnează valoarea din ultima înregistrare.
 Opțiunea pentru activarea funcțiilor de grup este butonul Totals de
pe bara de instrumente, secțiunea Show/Hide.
Cereri de interogare
 În grila de proiectare se afișează linia Total. Opțiunile de pe linia Total sunt
prezentate sub forma unei liste predefinite, care include funcțiile agregate,
alături de opțiunile cu rol special, prezentate în continuare.
 Group By: permite aplicarea de funcții agregate cu grupare.
 Expression: permite definirea unei expresii.
 Where: permite definirea unui criteriu în interogare.
 Aplicarea funcției Count în interogarea următoare, la atributul NrFactura:
Cereri de interogare
Conduce la afișarea numărului de facturi.

 Denumirea atributului rezultat, CountOfNrfactura, este definită implicit de


baza de date.
 Putem defini propria noastră denumire, înscriind-o înainte de atributul
argument al funcției (Nrfactura), și plasând semnul : între cele două
denumiri. Ca orice relație de acest tip, va fi definită în linia Field:
Cereri de interogare
 Rezultatul:

 Celelalte funcții agregate se aplică într-o manieră similară.


 Gruparea presupune existența următoarei corelații între valorile a două atribute A și B:
Unei valori a atributului A îi pot corespunde mai multe valori ale atributului B
 În acest caz, spunem că valorile B se pot grupa după valorile A și că A poate fi
considerat atribut de grupare pentru B.
 Gruparea poate fi unidirecțională sau bidirecțională, reciprocă.
 Grupare unidirecțională:
 Unui cod de client îi pot corespunde mai multe numere de facturi, dar
 Un număr de factură corespunde unui singur cod de client.
 Grupare bidirecțională:
 Unui cod de produs îi pot corespunde mai multe numere de facturi, dar totodată
 Unui număr de factură îi pot corespunde mai multe coduri de produs.
Cereri de interogare
 Utilizarea grupării presupune, alături de definirea funcției de grup, definirea atributului
de grupare, cu proprietatea Group By.
 Vom aplica funcția care ne calculează numărul de facturi pe fiecare client. Structura
interogării (stânga) și rezultatul (dreapta):
Cereri de interogare
 Gruparea are astfel, indiferent de funcția aplicată, semnificație de subtotal după
atributul de grupare.
 Se poate realiza grupare după mai multe atribute de grupare. Ordinea în care acestea
sunt plasate în grila de proiectare, de la stânga la dreapta, determină ordinea în care vor
fi efectuate grupările.
 Putem calcula, pe fiecare client, valorile totale pe fiecare factură (avem în vedere că pe
o factură pot fi mai multe produse, iar fiecărui produs îi corespunde o anumită cantitate,
un anumit preț, deci o anumită valoare fără TVA etc.).
 Structura interogării:
Cereri de interogare
 Rezultatul interogării:
Cereri de interogare
 Practic, în ultima interogare, valorile sunt detaliate pe fiecare factură.
 Operațiunea de detaliere (care oferă mai multe rezultate) se mai numește și drilldown.
 Restrângerea (care oferă mai puține rezultate – gruparea numai după cod de client) se
mai numește și rollup.
 Atributele care intervin în grupare pot fi preluate din surse diferite.
Cereri de interogare
5.3. Sortarea datelor.
 Pentru interogarea cu structura, respectiv rezultatul de mai jos:
Cereri de interogare
 Sortarea crescătoare după Pretfact conduce la următorul rezultat:
Cereri de interogare
 Sortarea descrescătoare după IDMagazin și sortarea crescătoare după Pretfact conduce la
următorul rezultat:

 Se observă că mai întâi se aplică sortarea după valorile primului atribut din stânga.
 Pentru valori identice ale acestui atribut (IDMagazin), în setul de valori corespunzătoare
ale lui Pretfact se aplică sortarea definită (crescătoare)
 Pot fi mai multe realizări ale atributului care descrie prețurile pentru aceeași realizare a
atributului IDMagazin.
 Practic, această relație vizează faptul că Pretfact include toate prețurile înregistrate pe
facturile emise de magazinul respectiv.
Cereri de interogare
5.4. Criterii de selecție. Parametri.
 Criteria (în grila de proiectare): criterii de selecție (o expresie logică prin care se
verifică fiecare valoare a atributului la care se aplică, rezultatul expresiei are semnificație
de adevărat/fals). În rezultatul interogării sunt incluse (prin filtrare) numai înregistrările
care conțin date pentru care criteriul de selecție este adevărat.
 Un criteriu de selecție este format din trei elemente. Se pot aplica mai multe criterii de
selecție într-o interogare, dar fiecare criteriu va fi construit din cele trei componente:
 Un atribut la valorile căruia se aplică;

 Un tip de criteriu (sunt patru tipuri);

 Un set de valori de referință, corespunzător tipului de criteriu aplicat.

 Valorile de referință, implicit, sunt case insensitive (nu se face diferența între litere
mari/mici).
 Valorile de referință sunt încadrate între ghilimele (textele), respectiv caractere # (datele
calendaristice). Aceste caractere speciale nu trebuie tastate de utilizator decât atunci când
pot să apară confuzii.
Cereri de interogare
1. Criterii bazate pe operatorii de comparație aritmetici (=, <>, <, >, <=, >=)
 Sintaxa criteriului:
Operator valoare_de_referință
 Operatorul = este implicit, prin urmare introducerea doar a unei valori de referință va
conduce la aplicarea automată a operatorului de egalitate.
 Exemplu: să se afișeze numai înregistrările în care prețul este mai mare de 320.98 RON.
Expresia criteriului este înscrisă în dreptul atributului de criteriu Pretfact și se aplică la
valorile acestuia. De asemenea, s-a definit sortare doar pentru atributul de criteriu.
Cereri de interogare
Rezultatul interogării (cea mai mică valoare a atributului criteriu este prezentată în prima
înregistrare):
Cereri de interogare
 Utilizarea operatorului implicit, cu aceeași valoare de referință, conduce la următorul
rezultat:

 Nu se afișează nici o înregistrare, deoarece prețurile sunt expuse cu două zecimale prin
rotunjire, dar valoarea reală are mai multe zecimale.
 Utilizarea operatorului implicit, cu valoarea de referință 3665874 pentru Nrfactura
generează următorul rezultat:

 Observație. În vederea exemplificării individuale a utilizării criteriilor de selecție,


înainte de aplicarea unui nou criteriu, criteriul anterior este șters, pentru a nu intra în
sfera aplicării combinate a criteriilor de selecție, subiect care va fi abordat în partea a
doua a acestui document.
 Utilizarea operatorului <>, pentru valoarea de referință 3665874 pentru Nrfactura
exclude înregistrarea din figura de mai sus din rezultat (operatorul diferit fiind opusul
operatorului de egalitate.
Cereri de interogare
Rezultatul interogării (cea mai mică valoare a atributului criteriu este prezentată în prima
înregistrare):
Cereri de interogare
2. Criterii bazate pe operatorul Between.
 Sintaxa criteriului:
Between valoare_de_referință_1 And valoare_de_referință_2

 Operatorul Between și operatorul (auxiliar în acest caz) And sunt cuvinte cheie. Ele
trebuie înscrise exact așa cum sunt definite.
 Este obligatorie păstrarea spațiilor care delimitează operatorii de parametrii definiți de
utilizator (în acest caz, valoare_de_referință_1 și valoare_de_referință_2)
 Utilizarea unui operator de tip Between asigură validarea tuturor valorilor din intervalul
închis delimitat de valoare_de_referință_1 și valoare_de_referință_2. Altfel spus, sunt
validate datele care se situează între valoare_de_referință_1 și valoare_de_referință_2,
inclusiv.
 Pentru criteriul:
Cereri de interogare
Rezultatul interogării:

 În fereastra din stânga, datele sunt sortate crescător după atributul de criteriu.
 În fereastra din dreapta, datele sunt sortate descrescător după același atribut.
 Se observă că valoarea minimă și cea maximă se încadrează în intervalul definit prin criteriu.
Cereri de interogare
3. Criterii bazate pe operatorul In.
 Sintaxa criteriului:
In(valoare_de_referință_1;valoare_de_referință_2; … valoare_de_referință_n)
 Operatorul In și parantezele rotunde sunt elemente cheie. Ele trebuie înscrise exact așa
cum sunt definite.
 Utilizarea unui criteriu de tip In asigură validarea tuturor valorilor atributului criteriu
care se regăsesc în mulțimea de valori de referință specificată. La aplicarea unui astfel de
criteriu, se realizează intersecția între mulțimea valorilor atributului și mulțimea valorilor
de referință. Sunt afișate numai înregistrările care conțin datele validate.
 Pentru criteriul:

 Rezultatul este:
Cereri de interogare
4. Criterii bazate pe operatorul Like.
 Sintaxa criteriului:
Like [wo]valoare_de_referință[wo]
 Operatorul Like este cuvânt cheie și se va înscrie ca atare.
 Notația [wo] se referă la operatorii de tip wildcard care pot însoți valoarea de referință.
 Parantezele drepte din notație subliniază caracterul opțional al operatorilor.
 Un operator wildcard ține locul oricărui sau oricăror caractere și are semnificația de orice
caracter/caractere înainte și/sau după valoarea de referință.
 Operatorii wildcard sunt:
 ? Ține locul unui singur caracter (literă mare/mică sau cifră);
 * Ține locul mai multor caractere, indiferent de tipul acestora;
 # Ține locul unui singur caracter cifră;
 [listă] Ține locul oricărui caracter din listă;
 [!listă] Ține locul oricărui caracter care nu este în listă. Operatorul de tip listă permite definirea de
intervale închise, prin utilizarea liniuței „-” între caracterele ce definesc limitele intervalului.
 Criteriile de tip Like se pot utiliza în trei variante:
 Like [wo]valoare_de_referință[wo]: sunt validate toate datele care includ valoarea de referință;

 Like [wo]valoare_de_referință: sunt validate toate datele care se termină cu valoarea de referință;

 Like valoare_de_referință[wo]: sunt validate toate datele care încep cu valoarea de referință.
Cereri de interogare
 Exemple:
Criteriul

Conduce la următorul rezultat:


Cereri de interogare
Criteriul

Conduce la următorul rezultat (sunt validate doar numerele de factură care încep cu A0 sau
A1):

De remarcat că valoarea de referință în acest caz A[0-1] include ea însăși un operator


wildcard.
Simbolul [] este specific și criteriului cu parametru, care va fi prezentat în continuare.
Cereri de interogare
Parametrizare
 Pentru orice tip de criteriu de selecție, valorile de referință pot fi definite sub formă de
parametru.
 Parametrul implică înlocuirea valorilor efective cu un mesaj definit de utilizator, scris
între paranteze drepte, care solicită, la vizualizarea rezultatelor interogării, introducerea
valorilor de referință efective.
 Avantajul parametrului este că la fiecare vizualizare a rezultatului interogării acesta se
modifică, dat fiind posibilitatea de a introduce alte valori de referință.
 Criteriul:

 Implică afișarea următorului mesaj la afișarea rezultatelor:


Cereri de interogare
 Utilizatorul introduce valoarea de referință dorită și confirmă prin butonul OK.
 Parametrul implică înlocuirea valorilor efective cu un mesaj definit de utilizator, scris
între paranteze drepte, care solicită, la vizualizarea rezultatelor interogării, introducerea
valorilor de referință efective.
 Avantajul parametrului este că la fiecare vizualizare a rezultatului interogării acesta se
modifică, dat fiind posibilitatea de a introduce alte valori de referință.
 Criteriul:

 Implică afișarea următorului mesaj la rularea cererii de interogare:


Cereri de interogare
 Se pot utiliza, într-o interogare, mai multe criterii de selecție, configurate
individual, la nivel de atribut.
 Pot fi aplicate mai multe criterii:
 Pentru același atribut;
 Pentru atribute diferite.

 Modul de scriere a criteriilor determină funcționarea acestora:


 Alternativ: sunt validate înregistrările care conțin datele care respectă cel puțin un
criteriu de selecție;
 Concomitent: sunt validate înregistrările care conțin datele care respectă toate criteriile
de selecție.
 Aceste configurări conduc la existența a patru forme de combinare a
criteriilor (fiecare variantă de asociere cu atribute criteriu din prima pereche
cu fiecare mod de funcționare din a doua pereche).
Cereri de interogare
 Vom analiza mai întâi combinarea criteriilor pentru același atribut.
 Modul de combinare se stabilește în funcție de rezultatul așteptat al
interogării: aceasta va include date ce respectă cel puțin un criteriu vs. date
care să respecte toate criteriile.
 Criterii concomitente:
 Toate criteriile se scriu în aceeași căsuță, unite prin operatorul logic And.
Criteriul:

conduce la afișarea înregistrărilor în care prețul este cuprins în intervalul (100,


500):
Cereri de interogare
Cereri de interogare
 Criterii alternative:
 Toate criteriile se înscriu în aceeași căsuță, unite prin operatorul logic Or;
 Fiecare criteriu se înscrie într-o căsuță de criteriu pe coloana atributului (se utilizează în
acest sens căsuța Criteria și căsuțele de la Or: în jos inclusiv).
Criteriile

conduc la validarea datelor care respectă cel puțin una dintre expresii. Astfel, sunt excluse
din rezultatul interogării:
- valorile mai mici sau cel mult egale cu 100;
- valorile cuprinse între 500 și 700 inclusiv;
- valorile mai mari sau cel puțin egale cu 900.
Cereri de interogare
Cereri de interogare
 Vom analiza în continuare aplicarea de criterii pentru atribute diferite.
Criterii concomitente
 Fiecare criteriu se înscrie într-o căsuță de criteriu pe coloana atributului său, dar se are în
vedere ca toate criteriile să fie amplasate pe aceeași linie.
Criteriile

conduc la validarea tuturor înregistrărilor pentru clientul cod 1157 și în care prețul este
cuprins în intervalul (100, 500).
Cereri de interogare
Cereri de interogare
Criterii alternative
 Fiecare criteriu se înscrie într-o căsuță de criteriu pe coloana atributului său, dar se
are în vedere ca toate criteriile să fie amplasate pe linii diferite.
Criteriile

conduc la validarea tuturor înregistrărilor pentru clientul cod 1157 sau în care prețul este
cuprins în intervalul (100, 500).
Cereri de interogare
Cereri de interogare
5.5. Interogări de acțiune
 Sunt patru tipuri de interogări de acțiune, fiecare dintre acestea execută o acțiune
predefinită asupra atributelor și înregistrărilor.
 Interogarea de tip creare tabel (Make Table Query) transformă rezultatul unei interogări
de selecție într-un tabel.
 Un beneficiu al acestei interogări este salvarea rezultatului interogării, la momentul
executării acțiunii de creare tabel, sub formă de tabel.
 Rezultatul interogării depinde de obiectele, atributele și valorile sursă și se actualizează
conform cu modificările acestora.
 Salvarea sub formă de tabel înseamnă că rezultatul devine autonom față de modificări
ulterioare ale surselor interogării (evident, rezultatele ulterioare ale interogării depind de
aceste modificări).
Crearea unei interogări de acest tip presupune următoarele etape:
 Crearea unei interogări de selecție, care poate include atribute preluate, prelucrări,
criterii etc.
Cereri de interogare
 Transformarea interogării de selecție în interogare Make Table: click pe butonul cu acest
nume de pe bara de instrumente sau comanda Make Table Query din meniul contextual
al zonei pentru surse de date în fereastra QBE, submeniul Query Type.

 Se afișează fereastra Make Table

 În caseta Table Name se înscrie numele noului tabel (am propus Tabel nou). Tabelul va fi
salvat fie în baza de date curentă (opțiunea Current Database), sau în altă bază de date,
ale cărei cale și nume pot fi definite prin butonul Browse.
Cereri de interogare
 Crearea tabelului presupune executarea interogării: butonul Run.

Observații.
 Pentru toate interogările de acțiune, vizualizarea rezultatelor permite consultarea
înregistrărilor care vor fi prelucrate prin acțiunea specifică interogării. Prelucrarea
efectivă se face prin butonul Run.
 Dacă opțiunea File-Options-Client Settings-Confirm-Action queries este activă,
acționarea butonului Run conduce la afișarea unui mesaj de confirmare: You are about
to…
 Afișarea acestui mesaj reprezintă confirmarea faptului că interogarea este configurată
corect din punct de vedere „tehnic”.
 Orice erori ulterioare se datorează conținutului (obiecte, atribute, valori) din baza de date
(ex. nerespectarea restricțiilor de integritate, încercarea neautorizată de a suprascrie un
tabel etc.)
Cereri de interogare
Interogarea de tip adăugare (Append Query)
 Permite adăugarea înregistrărilor din rezultatul unei interogări într-un tabel destinație.
 Pentru configurarea unei astfel de interogări, este necesar ca datele sursă și destinație să
respecte restricțiile de integritate:
 Să fie de același tip, dimensiune, sau caracteristicile să fie compatibile;

 Datele sursă să respecte regulile de validare pentru atributele destinație;

 Să nu se încalce regula de unicitate a cheii primare sau restricția de integritate


referențială pentru cheile externe.
Crearea unei astfel de interogări presupune:
 Crearea unei interogări de selecție care să conțină ca rezultat înregistrările care trebuie
adăugate;
 Transformarea interogării în interogare de tip adăugare: butonul Append de pe bara de
instrumente sau comanda Append Query din meniul contextual al zonei pentru surse de
date în fereastra QBE, submeniul Query Type.
Cereri de interogare
 Se afișează caseta de dialog Append:

 Caseta Table Name permite definirea tabelului destinație. Denumirea tabelului poate fi
selectată și din lista derulantă asociată casetei.
 Se permite selectarea unui tabel destinație din baza de date curentă (Current Database)
sau din altă bază de date (Another Database), identificată prin cale și nume (File Name).
 După efectuarea tuturor configurărilor necesare, adăugarea efectivă se realizează prin
click pe butonul Run de pe bara de instrumente.
 Dacă unele date nu respectă cerințele de integritate, se va afișa un mesaj care detaliază
erorile întâlnite, iar utilizatorul este consultat dacă dorește adăugarea parțială a
înregistrărilor.
 Recomandăm în acest caz anularea adăugării, corectarea erorilor și realizarea unei
adăugări unitare.
Cereri de interogare
Interogarea de tip actualizare (Update Query)
 Permite actualizarea automată, a valorilor pentru unul sau mai multe atribute, în
înregistrările care îndeplinesc criteriile de selecție definite (dacă nu se definesc criterii de
selecție, se actualizează automat toate valorile atributelor precizate).
 Valorile noi (rezultate după actualizare) pot fi:
 Valori efective, înscrise ca atare de utilizatori;

 Formule de calcul, care vor prelucra unitar vechile valori. Dacă în formulele de calcul
se folosesc denumiri de atribute (pentru a prelucra valorile acestora), denumirile se
vor încadra între paranteze drepte, de utilizator (în caz contrar, denumirile nu vor fi
recunoscute ca atare, ci drept șiruri de caractere).
 Criteriile de selecție se pot aplica la aceleași atribute pentru care se face actualizarea
și/sau la atribute diferite.
Configurarea interogării
 Se definește o interogare de selecție care are ca rezultat valorile ce trebuie modificate.
 Interogarea se transformă în interogare de tip actualizare: butonul Update de pe bara de
instrumente sau comanda Update Query din meniul contextual al zonei pentru surse de
date în fereastra QBE.
Cereri de interogare

 În grila de proiectare apare linia Update To, în care se va defini noua valoare.
 Interogarea de mai jos permite actualizarea, în tabelul Tabel nou, a codului de client 275
prin creșterea valorii sale cu o unitate:

 După rularea interogării, codul devine


Cereri de interogare
Interogarea de tip ștergere (Delete Query)
 Permite ștergerea automată, a înregistrărilor dintr-un tabel.
 Pot fi șterse toate înregistrările sau pot fi definite criterii de selecție care filtrează numai
anumite înregistrări.
Configurarea interogării:
 Crearea unei interogări de selecție al cărei rezultat include înregistrările pentru care se
dorește ștergerea;
 Interogarea se transformă în interogare de tip ștergere: butonul Delete de pe bara de
instrumente sau comanda Delete Query din meniul contextual al zonei pentru surse de
date în fereastra QBE.

 În grila de proiectare apare linia Delete.


Cereri de interogare
 În grila de proiectare apare linia Delete.
 Se va specifica, prin numele său și simbolul * (înscris în linia Field), tabelul din care se
șterg date, identificat în linia Delete prin opțiunea From;
 Criteriile de selecție care asigură filtrarea înregistrărilor „de șters” sunt identificate în
linia Delete prin opțiunea Where;

 Interogarea de mai sus asigură ștergerea tuturor înregistrărilor din Tabel nou pentru care
codul de client este 276
 Ștergerea efectivă a înregistrărilor presupune rularea interogării (butonul Run).
Cereri de interogare
5.6. Interogarea de tip analiză încrucișată – CrossTab Query
 Permite analiza corelației între valorile mai multor atribute, reflectată prin valori
agregate ale unui alt atribut specificat.
 Definirea interogării pornește de la structura acesteia:

 Corelația între atributele A și B se exprimă prin valorile agregate ale atributului C.


Atributele A și B sunt automat atribute de grupare.
 A poate include mai multe atribute. Ordinea acestora poate influența modul de calcul al
valorilor agregate C.
 B: un singur atribut.
 C: un singur atribut.
Configurarea interogării
 Primul pas presupune crearea unei interogări de selecție care include atributele ce
îndeplinesc rolurile A, B și C.
 Interogarea de selecție se transformă în interogare de tip analiză încrucișată: butonul
Crosstab de pe bara de instrumente.
Cereri de interogare

 În grila de proiectare sunt activate automat, fără posibilitatea de dezactivare, liniile


Crosstab și Total.
 În linia Total, atributele A și B rămân setate ca Group By (atribute de grupare), iar pentru
C se definește funcția de agregare dorită.
 În linia Crosstab:
 Atributele A se definesc Row Heading;

 Atributul B va fi Column Heading;

 Atributul C: Value.

 În cazul acestei interogări, fiind similară interogării de selecție, rularea și vizualizarea


rezultatelor au aceeași semnificație.
 Interogarea următoare afișează totalul vânzărilor (cantitativ) pe produse și pe clienți:
 Atât clienții, dar și produsele sunt identificate prin cheia primară a tabelelor
corespunzătoare, care garantează eliminarea duplicatelor din calcule;
 Atributul Cantfact permite, prin însumare, identificarea corelației dorite.
Cereri de interogare
Cereri de interogare
Rezultatul interogării

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