Documente Academic
Documente Profesional
Documente Cultură
ȘI LABORATOR
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
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:
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.
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ă;
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:
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 (sunt validate doar numerele de factură care încep cu A0 sau
A1):
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.
Î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;
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:
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:
Atributul C: Value.