BD-Curs5

20
 Curs 5 – INTEROGĂRI-continuar e Alte precizări cu privire la interogările de tipul Total Pe lâng ă func ţiil e de tip agreg at prezentat e la paragraf ul anterior (adică Sum, Count,  Avg, StDev, Var , Min, Max , Last  ş i First ) în lista de selecţie din linia Total: mai sunt disponibile opţiunile Where şi Expression. Opţ i unea Where se va utiliza dacă un câmp trebuie utilizat pentru a preciza anumite criterii de selecţie, dar nu se doreşte efectuarea grupării după câmpul respectiv. Op ţ i un ea  Expressi on se va utiliza pentru câmpurile calculate ce returnează un singur rezultat la nivelul grupului. Ee!plul ": Interogarea din figura de mai jos returnează numărul de angajaţi din fiecare categorie de funcţii dar nu mai pentru cei cu data angajării începând cu 1.1.!1.  "re#uie remarcat că un câmp pentru care a fost selectată opţiunea Where nu mai poate fi selectat  pentru afi$are (în linia Show%. &a e'ecuţie interogarea de mai sus va afi$a: 1

Transcript of BD-Curs5

Page 1: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 1/20

Curs 5 – INTEROGĂRI-continuare

Alte precizări cu privire la interogările de tipul Total

Pe lângă funcţiile de tip agregat prezentate la paragraful anterior (adică Sum, Count, Avg, StDev, Var , Min, Max , Last  şi First ) în lista de selecţie din linia Total: maisunt disponibile opţiunile Where şi Expression.

• Opţiunea Where  se va utiliza dacă un câmp trebuie utilizat pentru apreciza anumite criterii de selecţie, dar nu se doreşte efectuarea grupăriidupă câmpul respectiv.

• Opţiunea  Expression  se va utiliza pentru câmpurile calculate ce returnează un singur rezultat la nivelul grupului.

Ee!plul ": Interogarea din figura de mai jos returnează numărul de angajaţi din fiecare categoriede funcţii dar numai pentru cei cu data angajării începând cu 1.1.!1. 

"re#uie remarcat că un câmp pentru care a fost selectată opţiunea Where nu mai poate fi selectat pentru afi$are (în linia Show%. &a e'ecuţie interogarea de mai sus va afi$a:

1

Page 2: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 2/20

Ee!plul #: Interogarea din figura de mai jos returnează numărul de angajaţi cu studii medii $i nr.de angajaţi cu studii superioare:

 

n e'emplu de interogare cu opţiunea Expression se va da în paragraful următor) la Interogări cuc$!puri calculate.

Interogări cu câmpuri calculate

Interogările de selecţie $i cele de tip Total   pot cuprinde $i câmpuri calculate. *ceste câmpurireturnează) la e'ecutarea interogării) valoarea e'presiilor *ccess asociate lor. Pentru a adăuga uncâmp calculat într+o interogare se tastează numele acestuia într+o nouă coloană din grila %uer&'esign) se adaugă două puncte ( $i apoi se completează e'presia dorită.

Ee!plul ": Interogarea de mai jos calculează pentru fiecare angajat salariul net ca fiind salariul #rut + .1,-salariul #rut.

!

Page 3: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 3/20

Ee!plul #: e cere să se afi$eze o listă alfa#etică a tuturor angajaţilor cu salariul lor #rut. /umele lor să fie afi$at compactat) adică într+un singur câmp să apară numele despărţit cu unspaţiu de prenume.

&a e'ecuţie interogarea de mai sus va afi$a următoarea ta#elă virtuală:

0

Page 4: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 4/20

Ee!plul ): Interogarea de mai jos calculează media salariilor nete pe categorii de funcţii $i)

într+un câmp calculat) va determină valoarea unei prime salariale ce se va acorda fiecărui salariatdin respectiva categorie de funcţii) primă care va fi de 2 din salariul net mediu pe categoriarespectivă.

&a rularea interogării o#ţinem:

3

Page 5: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 5/20

4lementele unei e'presii *ccess sunt:•   Operatorii 

•   Constantele

•   Identificatorii 

•   Funcţiile

Operatorii  utilizaţi în construirea e'presiilor *ccess se pot clasifica astfel:

Arit!etici: 5 ) + ) - ) 6 ) 7od (returnează restul împărţirii la un întreg% ) 8 (ridicare la putere% 'e atri*uire +i co!parare: 9 (egal cu%) (mai mic% ) ; (mai mare%) 9 (mai mic sau egal%)

;9 (mai mare sau egal%) ; (diferit de%.*ce$ti operatori returnează valorile logice True  $i ,alse. 4'cepţie reprezintă cazul în care unuldintre operanzi are valoarea Null (<aloarea /ull înseamnă practic lipsa unei valori şi nueste acelaşi lucru cu valoarea 0 (zero) pentru câmpurile numerice sau cu şirulvid pentru câmpurile de tip tet% $i deci orice comparare va returna valoarea Null. ogici: And, Or, Not . e pot utilize pentru construirea e'presiilor *ccess compuse. 'e concatenare a +irurilor de caractere: =) 5 (am#ele au acela$i efect de alipire a unor 

$iruri de caractere% 'e identi.icare: / $i 0 (punct%. *ceste două caractere sunt utilizate ca separatori) astfel:o >om#ină numele colecţiilor de o#iecte $i numele o#iectelor pentru a selecta un

anumit o#iect sau proprietate a lui:E0: ?orms@A*ngajatiBo Identifică atri#ute (câmpuri% aparţinând unei ta#ele:E0: A*ngajatiB.A/umeBo Ceose#e$te numele o#iectelor de cele ale proprietăţilor:E0: "e't#o'1.?ontsize91! unde Textbox reprezintă un o#iect de control $i  Fontsize

reprezintă o proprietate (care sta#ile$te dimensiunea fontului% Al1i operatori: Is, In, Like, Between

Operatorul Is se folose$te numai în e'presiile Is Null  sau Is Not Null ) semnificând faptul căoperandul este nedefinit. Ce e'emplu) în ta#ela Anga2a1i ar putea figura $i câmpul numericRestanta cotizatie) câmp care la unii angajaţi ar putea fi necompletat din motiv că persoanele încauză nu sunt mem#ri în sindicat $i deci nu plătesc nici o cotizaţie) sau ar putea fie egal cu zerodacă persoana nu are restanţe în plata cotizaţiei. Pentru afi$area primei categorii de personae(care au câmpul necompletat% se poate folosi interogarea de mai jos:

Page 6: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 6/20

Iar pentru cea de+a doua categorie (care nu au restanţe la cotizaţie% se va folosi interogarea:

*tunci când se caută acele înregistrări care sunt mem#re de sindicat) fie că au sau nu aurestanţe la cotizaţie) se poate folosi interogarea:

Operatorul  In  precizează mulţimea de valori admise pentru un atri#ut. Ce e'emplu)interogarea de mai jos va selecta angajaţii a caror denumire de funcţie este DsoferE) Dconta#ilE)Danaliza !E sau Dprogramare !E.

inta'a este: In (DsoferEFDconta#ilEFDanaliza !EFDprogramare !E%.

,

Page 7: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 7/20

Operatorul Between este urmat întotdeauna de doi operanzi legaţi cu operatorul logic GI:

 And . *ce$tia pot fi de tip numeric numeric) date calendaristice sau cHiar te't. 4'presia care rezultădin comparaţia atri#utului cu e'presia ce urmează după Between va fi True dacă atri#utul are ovaloare cuprinsă între cele două limite (numerice) date calendaristice sau te't% date de operanziilegaţi cu And .

inta'a deci este: Between operand1 And  operand!.Ee!plu( Interogarea de mai jos afi$ează persoanele care s+au angajat în anul !3.

Operatorul Like permite specificarea unor criterii de selecţie prin căutarea unui $ir într+unte't n interiorul te'tuluzi se pot folosi caracterele generice (Jildcards%: K $i -. >aracterul Kînlocuie$te orice caracter $i e'act unul în poziţia în care apare) în timp ce caracterul - înlocuie$teorice $i oricâte caractere în poziţia în care apare $i în următoarele.

Ce e'emplu: i3e 4AA6 caută acele corespondenţe care au e'act patru caractere $i încep$i se termina cu literaD*E) în timp ce i3e 47escu6 va permite selecţia numelor terminate înDescuE.

L

Page 8: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 8/20

Constantele utilizate în construirea e'presiilor *ccess pot fi de natură:• Nu!erică (e'. 13) .!%• Tet (e'. D1!0E) DPopescu <ladE%• 'ată calendaristică  (e'. M1.N.!,M sau MN616!,M) funcţie de formatul de

reprezentare al datelor calendaristice%

 Identificatorii sunt nume de o#iecte *ccess (ta#ele) atri#ute) formulare) etc%) ca de e'empluA*ngajatiB@AnumeB sau A?unctiiB.Acod functieB. Prin intermediul identificatorilor se pot prelua valori pentru definirea criteriilor de pe formulare create anterior. (4'emple se vor prezenta după ce se parcurge realizarea formelor + ?orms%.

Funcţiile) care întotdeauna returnează un rezultat) pot fi de următoarele tipuri:• 'ată calendaristicăE0(  ate! "  returnează data curentă

  #onth! "  returnează numărul lunii din data calendaristică dată ca argument între parantezele rotunde (astfel #onth!ate! ""  returnează numărul lunii calendaristice curente%

 $ear! "  returnează anul din data calendaristică dată ca argument între parantezele rotunde

(astfel $ear!ate! ""  returnează anul curent%• TetE0( Len! "  returnează lungimea unui $ir de caractere) dat ca argument

 Tri%! " –  elimină spaţiile de la începutul $i de la sfâr$itul $irului dat ca argument Le&t!'sir(, n "  returnează primele n caractere din $irul dat ca argument )i*ht!'sir(, n "  returnează ultimele n caractere din $irul dat ca argument

• 8ate!atice +i trigono!etriceE0(  Abs! "  returnează valoarea a#solută a numărului dat ca argument

  Int! "   returnează partea întreagă dintr+o valoare numerică dată ca argument  )ound!'nr(, n "  rotunje$te o valoare numerică dată cu un anumit număr) n) de zecimale Su%! "  calculează suma valorilor date ca arumente  A+*! "  calculează media valorilor date ca argumente

• ,inanciareE0( +! "  returnează valoarea actuală a unei anuităţi plătite în rate periodice egale

  Sln! "  returnează valoarea amortizării unui mijloc fi' după o anumită perioadă(amortizare liniară% etc.• 'iverseE0(  IsNu%eri-! "  returnează valoarea logică True dacă e'presia dată ca argument estenumerică

  IsNull! "   returnează True  dacă e'presia dată ca argument are valoarea  Null   (estenedefinită%

 II&!-onditieF +aloare./ +aloare0% evaluează condiţia dată ca prim parametru $i returnează+aloare. dacă această condiţie este găsită ca fiind adevărată $i +aloare0 în caz contrar.Ee!plu cu Ii.( Interogarea de mai jos afi$ează pentru fiecare angajat care are data angajăriiînainte de 1.1.! o primă salarială de 2 din salariul său #rut.

Page 9: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 9/20

&a rulare vom avea:

Ee!plu cu Ii.9 :ear +i 'ate;<: ă se acorde prime de 2 din salariul #rut pentru angajaţii careau o vecHime de peste ani.

n acest caz formula Iif din grila de interogare se va scrie ca în figura de mai jos:

N

Page 10: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 10/20

Gi la rulare vom avea:

INTEROGĂRILE DE TIP CROSSTAB

!a începutul capitolului Crearea şi utilizarea interogărilor amprezentat intenţionat prima opţiune oferită de  Access" Create query inDesign view şi nu pe cea care asigura lucrul cu #vră$itori%, deoarece eranecesară dobândirea cunoştinţelor de bază, fundamentale, legate degenerarea şi proiectarea interogărilor.

&cum, în această etapă, lucrul cu #vră$itori% (wizards) devine e'cient, iar

uer ul de tip Crosstab este un eemplu foarte bun pentru a începe aceastăprezentare. *n traducere crosstab  înseamnă tabel (încrucişat) cu două saumai multe intrări. +ractic, este posibilă elaborarea unor tabele virtuale, în caregruparea şi ordonarea datelor se realizează atât pe linii cât şi pe coloane laintersecţia cărora se pot efectua calcule complee. (&stfel se poate efectua oanaliză multidimensională a datelor permiţând obţinerea unor situaţii sinteticeasemănătoare tabelelor pivot din - cel, !otus /1 etc.)

2n eemplu de interogare de tip Crosstab este acela în care se obţinesituaţia numerică a anga$aţilor pe categorii de funcţii şi pe tipuri de studii.&ceastă situaţie va ' un tabel cu dublă intrare" +e rânduri (rows) categoriile de unc!ii din instituţie conform tabelei

Categorii de unc!ii" iar pe coloane (co!umns) tipurile de #tudii.

*n celulele din tabel (la intersecţia liniilor cu coloanele) vom aveanumărul de per#oane (count ) din instituţie care îndeplinesc o funcţie dintroanumită categorie şi au anumite studii.

*nainte de a începe lucrul cu #vră$itorul% este necesar să ne construim un"uer a$utător de tip Select care va furniza informaţiile necesare (codanga$at, denumire categorie de funcţii şi denumire #tudii).

ac3eta de proiectare a acestui "uer este"

1

Page 11: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 11/20

+entru a putea alege tipul de "uer dorit, posibil de realizat cu a$utorul#vră$itorilor% vom da clic pe butonul New din fereastra de prezentare a bazeide date"

4upă apăsarea butonului New va apărea un dialog prin intermediulcăruia vom putea alege tipul de "uer dorit"

+aşii care vor ' urmaţi în continuare sunt prezentaţi în următoareasuccesiune de dialoguri"

• alegem sursa de date ("uer ul construit anterior şi salvat cu numele inta$utor cro##ta%"

11

Page 12: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 12/20

• +e rânduri vor ' categoriile de funcţii"

• 5ar pe coloane tipurile de studii"

1!

Page 13: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 13/20

• -e alege funcţia care realizează numărarea persoanelor"

• *n acest moment "uer ul Crosstab este gata şi i se mai dă doarnumele interogării"

10

Page 14: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 14/20

• 4upă apăsarea butonului 6Finish7 poate ' vizualizat tabelul realizat de#vră$itor%"

ac3eta de proiectare a acestui "uer (realizată de wizard) este"

13

Page 15: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 15/20

8odul &'L generat automat de Access pentru această interogare carepoate ' consultat prin intermediul opţiunii S#L View, este"

TRANSFORM Count([int autor crosstab!"[Co# angaat!$ AS [CountO%Co# angaat!S&'&CT [int autor crosstab!"[Denuire categorie %unctie!) Count([int 

autor crosstab!"[Co# angaat!$ AS [Total O% Co# angaat!

FROM [int autor crosstab!*RO+, -. [int autor crosstab!"[Denuire categorie %unctie!,/0OT [int autor crosstab!"[Denuire stu#ii!1

INTEROGĂRI DE (C)I*NE

Pe lângă interogările pentru selecţia datelor $i cele de tip 1rosstab  care au foste'emplificate în paragrafele anterioare) QRC *ccess pune la dispoziţia utilizatorilor o categoriedistinctă de interogări care permit manipularea $i actualizarea înregistrărilor.

4'trem de utile în în e'ploatarea #azei de date) acestea pot avea ca rezultat:• >rearea de noi ta#ele !#ake Table 2uer3"

• *ctualizarea datelor din ta#ele !4pdate 2uer3"

• *dăugarea de noi înregistrări în ta#ele !Append 2uer3"

• Gtergere unor înregistrări din anumite ta#ele !elete 2uer3"

7odul de ela#orare a unei interogări de tip acţiune este similar celui prezentat în cazulinterogărilor de selecţie) presupunând ca etapă suplimentară specificarea e'plicită prin intermediulmeniului %uer& sau a #utonului %uer& T&pe  a tipului de interogare dorit.

7odificările asupra #azei de date sunt effectuate doar în momentul e'ecuţiei interogării.4ste recomandată proiectarea în preala#il a cererii ca o simplă interogare de selecţie $i

verificarea rezultatelor ce vor fi afectate deoarece nu e'istă posi#ilitatea revenirii în cazul $tergerii

sau modificării eronate a înregistrărilor.

INTEROGĂRIE 'E TI= >='ATE

5nterogările de tip 2pdate sunt utile pentru actualizarea automată aunuia sau mai multor câmpuri eistente în sursele de date actualizabile carecel mai frecvent sunt tabelele. *n traducere update înseamnă actualizare.

4e eemplu, dacă se doreşte actualizarea tuturor valorilor câmpurilordata ang din tabela (nga$ati la valoarea //&ugust/999 (:;<//</999: înformatul implicit sau ://.0;./999:) atunci cel mai indicat este să sefolosească un "uer de tip +2#ate. O altă alternativă, mult mai ine'cientă, ar

' să se actualizeze manual valorile câmpului data ang pentru 'ecare înregistrare. *n cazul în care această tabelă ar avea câteva sute de înregistrărişi dacă în plus sar mai pune şi condiţia ca actualizarea să se producă doarpentru persoanele cu studii superioare, atunci cu siguranţă va trebuiabandonată metoda manuală şi apelat la "uer ul de tip +2#ate.

*n acest sens se solicită crearea unui "uer nou. (New sau Createquery in Design view). -e adaugă tabela (nga$ati şi se solicitătransformarea interogării din tipul implicit (de tip Select ) în interogare de tip+2#ate. 2rmătoarea imagine prezintă această acţiune"

1

Page 16: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 16/20

4upă setarea opţiunii +2#ate 3uery , care face să apară linia +2#ateto în grila de interogare) se adăugă restricţia în linia Criteria (cod #tudii+,) şise înscriere valoarea de actualizare (:;<//</999:) în linia +2#ate To.ac3eta de proiectare va arăta astfel"

5nterogările de tip +2#ate modi'că 'zic datele din tabele şi se lansează în eecuţie prin comanda Run disponibilă prin intermediul butonului - dintoo!$ar . 4upă apăsarea acestui buton în mod implicit apare următorul dialog"

care ne solicită să mai con'rmăm încă o dată că întradevăr dorim actualizarea(modi'carea) datelor. odi'carea odată făcută este ireversibilă. -e observă că Accessul a identi'cat de$a că în tabela (nga$ati eistă doar // înregistrări(rows) care satisfac condiţia. 8on'rmând cu 6%es7 se produc modi'cările

1,

Page 17: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 17/20

cerute în tabela (nga$a!i" care trebuie vizualizată din secţiunea Ta%le# prindublu clic pe iconul tabelei.

INTEROGĂRIE 'E TI= 8A?E-TA@E

Oferă posibilitatea creării unei tabele noi pe baza structurii şi dateloreistente în alte tabele.-ă presupunem că dorim crearea unei tabele noi numită Ta%ela nouă

cu datele anga$a!ilor care să aibă acelaşi conţinut cu tabela (nga$a!i.+rocedura este similară cu cea de la interogările de tip +2#ate, cu deosebireacă de această dată se va seta opţiunea Ma4e5Table 3uery "

4upă setarea opţiunii va apărea următorul dialog în care vom înscrienumele noii tabele"

*n continuare vor ' trase prin #drag & drop% câmpurile dorite pentru a 'conţinute în noua tabelă. &poi, tot ce avem de făcut este apăsarea butonului'un din too!$ar , care va avea din nou ca e=ect apariţia unui dialog decon'rmare"

1L

Page 18: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 18/20

4acă se allege %es, această acţiune va avea ca rezultat apariţia noiitabele în fereastra obiectelor de tip (a$!e"

INTEROGĂRIE 'E TI= 'EETE

4acă se doreşte ştergerea anumitor înregistrări dintro tabelă pe bazaunor criterii, atunci se foloseşte "uer ul de tip Delete (şterge).

odalitatea de transformare a unui "uer implicit de tip Select întrun"uer de tip Delete constă în alegerea opţiunii Delete 3uery din listaderulantă a tipurilor de interogări.

-ă presupunem că dorim să ştergem înregistrările din tabela (nga$a!icare corespund persoanelor cu studii medii, adică acolo unde (w6ere) cod#tudii+..

1

Page 19: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 19/20

4upă transformarea în uer> de tip Delete (apare în grilă linia Delete)şi după completarea criteriului /0ere cod #tudii+., mac3eta de proiectareva '"

&cţiunea de ştergere se va declanşa după lansarea comenzii Run.

INTEROGĂRIE 'E TI= A==EN'

4e multe ori este necesară preluarea înregistrărilor dintro tabelă şiadăugarea lor (append) întro altă tabelă. &ceasta se realizează prin "uer ulde tip  A22en# . -tructura celor două tabele trebuie să 'e aceeaşi pentrucâmpurile care se vor adăuga în noile înregistrări.

-ă presupunem că avem tabela numită Ta%ela nouă cu datele

anga$a!ilor şi că dorim adăugarea înregistrărilor acestei tabele la înregistrările tabelei Date anga$a!i. +aşii algoritmului care va trebui urmatsunt următorii"/) -e desc3ide o nouă interogare cu tabela şi câmpurile care se doresc să 'eadăugate la o altă dabelă"

1N

Page 20: BD-Curs5

7/21/2019 BD-Curs5

http://slidepdf.com/reader/full/bd-curs5 20/20

) 4upă alegerea tipului de interogare (ppend 'uer1 se dă numele tabelei lacare să se facă adăugarea înregistrărilor"

1) &pare în grilă linia  A22en# To  cu câmpurile corespondente din tabela(nga$ati la care să se facă adăugarea" 

?) -e dă Run  şi se veri'că efectuarea adăugărilor în secţiunea Tablesdesc3izând tabela (nga$ati.

!