Documente Academic
Documente Profesional
Documente Cultură
Lucrri de laborator
Baze de date i programe
LUCRAREA DE LABORATOR 5
Construirea i utilizarea interogrilor complexe
Problema 1.S
Lucrri de laborator
Baze de date i programe
6. Rulm interogarea cu ajutorul butonului View (Datasheet View) sau Run din fila
DESIGN;
7. Observm c denumirea coloanei a doua nu este sugestiv, motiv pentru care revenim
n modul de proiectare (Design View) i i atribuim un alias;
Lucrri de laborator
Baze de date i programe
9. Se salveaz interogarea.
Problema 2.
Lucrri de laborator
Baze de date i programe
Problema 3.
Care sunt mrcile pentru care avem mai multe produse n nomenclator?
Lucrri de laborator
Baze de date i programe
Problema 4. Cte modificri de pre s-au efectuat pe fiecare cod de produs n parte?
Rezolvare: Se va considera tabela Istoric_Pret.
Problema 6.
implicat.
Rezolvare: Se vor urma paii descrii mai jos:
1. Analiznd enunul i structura bazei de date, constatm c primele 3 informaii se
vor extrage dintr-o tabel (Facturi), n timp ce numele partenerului se regsete n
cadrul tabelei Parteneri. Deci, la deschiderea proiectantului de interogri, din
fereastra Show Table alegem att tabela Facturi, ct i Parteneri.
Lucrri de laborator
Baze de date i programe
2. Se observ legtura dintre atributele Cod i Cod Fiscal ale celor dou tabele.
Legtura este motenit de la etapa de trasare a relaiilor din cadrul bazei de date,
dar se poate oricnd renuna la ea (selectare i tergere). Dac extragem n acest
moment codul SQL, acesta va fi:
SELECT FROM Parteneri INNER JOIN Facturi ON Parteneri.[Cod Fiscal] = Facturi.Cod;
Deci, se realizeaz o relaie de tip INNER JOIN sau EQUI-JOIN ntre cele dou tabele, ceea
ce nseamn c vor fi luate n considerare doar acele nregistrri pentru care exist egalitate
ntre cele dou coduri. Mai concret, fiecare partener va aprea
doar
pe facturile emise de/ctre el, nu i pe celelalte. Deci, partenerului
cu
codul fiscal 112211 i vor fi asociate doar facturile la care codul
este
numai i numai 112211, adic factura cu numrul 2000 i 3000.
Acum adugm informaiile ce dorim s fie extrase din cele dou
tabele. Utilizm fie varianta cu dublu-clic, fie cu selecie direct
listele Table i Field, dar exact n aceast ordine. n caz contrar,
avem mai multe surse de date i/sau multe cmpuri, ar putea fi
destul de dificil de gestionat, dup cum se vede i n imaginea din
dreapta;
din
cnd
Lucrri de laborator
Baze de date i programe
Lucrri de laborator
Baze de date i programe
6. Putem s refacem relaia dintre tabele prin efectuarea unei operaii drag&drop
ntre atributele implicate, sau s nchidem fereastra interogrii, fr a salva
ultimele modificri.
De reinut (pe baza vizualizrii din SQL View):
Atunci cnd intervin mai multe surse de date n panoul superior al ferestrei de
proiectare a interogrilor, toate trebuie s fie conectate ntre ele n peste 99% din cazuri.
Atunci cnd relaia presupune stabilirea unei legturi exacte pe baza egalitii valorilor
atributelor corespondente, avem de-a face cu operaiunea de join intern. Pentru aceasta, n
SQL se folosete clauza INNER JOIN.
Problema 7.
2. Avnd implicate dou surse de date, ntre ele trebuie s existe o relaie, n cazul n
care nu suntem interesai de obinerea produsului cartezian. La problema
anterioar afiam informaii doar pentru partenerii care au emis sau crora li s-a
emis vreo factur. Dac dorim afiarea n plus i a partenerilor care nu au facturi,
sau/i ipotetic vorbind facturile care nu au partener, vom apela la un altfel de
uniune, i anume operaiunea de join extern (OUTER JOIN). Pentru modificare
tipului implicit de uniune, se d dublu-clic pe relaie sau se selecteaz relaia i se
efectueaz un clic-dreapta de mouse, alegndu-se Join Properties din cadrul
meniului contextual.
Lucrri de laborator
Baze de date i programe
n Access, un join extern se distinge vizual prin prezena unei sgei la captul relaiei.
Sgeata se va afla legat de sursa de date deficient de informaii, n cazul nostru tabela
Facturi. Concret, n cazul acestui exemplu, dup modul de referire al tabelelor, avem o
uniune la stnga. Un join la dreapta aici n-ar aduce niciun rezultat suplimentar fa de un join
intern, deoarece nu este nclcat integritatea referenial, adic nu avem facturi fr s
cunoatem emitentul sau beneficiarul.
3. Afim rezultatul interogrii;
Observaie: Se vede c primele 6 facturi au partener cunoscut, n timp ce ultimele dou nu.
Cu toate acestea sesizm c Electronica IMPEX SRL totui apare ca fiind un partener fr
vreo factur. De ce? Relaiile dintre sursele de date s-au stabilit pe baza codului fiscal i nu
a numelui. n cazul de fa avem doi parteneri cu nume identic, dar doar unul dintre ei a
efectuat tranzacii.
De reinut (pe baza vizualizrii din SQL View):
O operaie de join extern la stnga, presupune existena unei legturi dintre dou
surse de date S i D i se noteaz S LEFT JOIN D ON i presupune afiarea tuturor
nregistrrilor din S, completate cu date coloanele din D doar unde este satisfcut condiia
de egalitate ntre atributele de legtur, restul fiind completate cu NULL-uri.
Lucrri de laborator
Baze de date i programe
1. Avem nevoie de informaii din 3 tabele, deoarece denumirea i marca sunt n Produse,
cantitatea n Continut_Fact, iar tipul facturii l gsim doar n Facturi. ntre ele trebuie
s existe 2 relaii;
2. Se ruleaz interogarea;
10
Lucrri de laborator
Baze de date i programe
Problema 11. S se afieze pentru fiecare produs preul valabil n acest moment. n
cazul n care data curent este dup 15/12/2014, se va considera o dat n intervalul
01/01/2014 i 15/12/2014.
Rezolvare: Se va consulta istoricul schimbrii preului. Interogarea solicit dou surse
de date.
1. Se adaug Produse i Istoric_Pret n fereastra constructorului de interogri i se
adaug cteva informaii relevante cu privire la identitatea produsului. Pentru
introducerea condiiei se va folosi constructorul de expresii, iar coloana n care se
introduce criteriul, poate fi sau nu afiat;
11
Lucrri de laborator
Baze de date i programe
2. Se ruleaz interogarea;
Problema 12. S se afieze detaliat produsul, marca, data, cantitatea i valoarea vnzrii,
inndu-se cont i de discount-ul acordat n acea vreme i TVA.
Rezolvare: Enunul pare destul simplu, ns rezolvarea este mai complex, dar nu complicat.
Trebuie s inem cont de o serie de aspecte, precum:
12
Lucrri de laborator
Baze de date i programe
Relaiile dintre sursele de date sunt motenite, deci nu mai trebuie create n cadrul
interogrii. Momentan avem 16 rezultate returnate. Fr existena relaiilor, numrul
de nregistrri generate ar fi n momentul de fa 4.752. Inacceptabil!
13
Lucrri de laborator
Baze de date i programe
14
Lucrri de laborator
Baze de date i programe
Problema 13.
Rezolvare:
1. se selecteaz fila Create i se efectueaz click pe butonul Query Design.
2. se afieaz fereastra Show Table ce conine o list a tabelelor i interogrilor care pot
reprezenta sursa de date pentru noua interogare. Se selecteaz tabelele
corespunztoarea, se acioneaz butonul Add. Se termin operaia de selectare a
tabelelor prin butonul Close.
3. se selecteaz cmpurile care vor fi afiate n urma interogrii
4. pentru cmpul Data se tasteaz cele dou date (de nceput i de sfrit) folosind
expresia between ... And .... iar valorile sub cuprinse ntre #.
5. se salveaz interogarea cu numele Cantitaticumparateaprilie.
Se obine urmtorul rezultat:
15
Lucrri de laborator
Baze de date i programe
Problema 14.
Rezolvare: Datele necesare interogrii provin din dou tabele diferite: FACTURI respectiv
CONTINUT-FACT din baza de date MAGAZIN.
1. se construiete o nou interogare n modul Design View.
2. prin intermediul ferestrei Show Table se vor alege doar acele tabele de care avem
nevoie (n cazul acesta FACTURI respectiv CONTINUT-FACT).
5.
Problema 15.
firma.
Rezolvare: Interogarea va afia cmpurile Denumire (tabelul PRODUSE) i Cant (tabelul
CONTINUT-FACT).
1. se construiete n modul Design View interogarea
2. se selecteaz n fereastra Show Table tabelele PRODUSE i CONTINUT-FACT.
16
Lucrri de laborator
Baze de date i programe
Problema 16.
Rezolvare:
1. se construiete n modul Design View o interogare nou
2. se selecteaz n fereastra Show Table tabelele FACTURI, PRODUSE respectiv
CONTINUT-FACT.
3. se selecteaz cmpurile Tip, Denumire respectiv Cant.
4. pentru a obine totalul cantitilor se va folosi butonul Totals din fila Query Tools
Design; n rndul Total se va selecta funcia Sum pentru cmpul Cant i Group by
pentru cmpul Tip respectiv Denumire; acesta nseamn c denumirile identice se
grupeaz, iar pentru fiecare grup astfel obinut se nsumeaz cantitile.
17
Lucrri de laborator
Baze de date i programe
Problema 17.
Rezolvare:
a. pentru cantitatea minim interogarea n Design View este urmtoarea:
18
Lucrri de laborator
Baze de date i programe
Problema 18.
Rezolvare: Vom evidenia n cadrul prezentrii rezolvrii, doar elementele de noutate utilizate
aici.
19
Lucrri de laborator
Baze de date i programe
Problema 19.
20
Lucrri de laborator
Baze de date i programe
Problema 20.
Problema 21.
Problema 22.
Problema 23.
Problema 24.
Problema 25.
21
Lucrri de laborator
Baze de date i programe
Problema 26.
Problema 27.
PROBLEME PROPUSE
Problema 1. Cte abonamente s-au emis pe fiecare linie n octombrie-noiembrie?
Problema 2. Cte linii au staie n Piaa Mihai Viteazul?
Problema 3. Care este suma ncasat de RATUC pentru toate abonamentele de tip
reducere 1 luna 1 linie?
Problema 4. Care este cea mai profitabil linie din punct de vedere al sumelor totale
ncasate?
Problema 5. Care este cel mai popular tip de abonament?
22