luni, 7 octombrie 2019

INTEROGĂRI

CAPITOLUL 9 INTEROGĂRI După studierea acestui capitol, veţi fi capabili să: • descrieţi tipurile de interogări; • creaţi interogări (prin proiectare independentă sau cu ajutorul sistemului de asistenţă) care vor selecta date din unul sau mai multe tabele; • executaţi interogări; • actualizaţi datele din tabele prin intermediul interogărilor; • obţineţi cîmpuri de date noi în baza informaţiilor existente; • creaţi totalizări ale datelor din unul sau mai multe tabele; • reprezentaţi compact subseturi de date din unul sau mai multe tabele. 9.1. Noţiuni generale despre interogări Sistemele de gestiune a bazelor de date au fost concepute pentru a păstra informaţii şi pentru a automatiza procesul de prelucrare a acestor informaţii. Chiar şi pentru o bază de date cu cîteva sute de înregistrări, căutarea manuală a datelor care satisfac anumite condiţii este anevoioasă. Menţionăm că există baze de date care conţin milioane de înregistrări. De exemplu, unii operatori de telefonie mobilă din Republica Moldova au peste 1 000 000 de abonaţi! La ultimele alegeri parlamentare din ţară au participat peste 1,5 milioane de alegători. Deci, în cazul votării electronice, se vor prelucra peste 1,5 milioane de înregistrări ale unei baze de date! Căutarea unor date poate implica consultarea cîtorva tabele. De exemplu, pentru a afla ce discipline studiază un elev anume din baza de date Liceu, trebuie să examinăm tabelele E levi, C lase, P rof_dis_clasa şi D iscipline. Să ne convingem! • Consultaţi baza de date Liceu şi determinaţi ce discipline studiază elevul D an M oraru. Exerciţiul propus este doar un mic argument menit să demonstreze necesitatea cercetării şi prelucrării automatizate a informaţiilor unei baze de date. Pentru selectarea rapidă din unul sau din mai multe tabele a seturilor de date care corespund unor condiţii, dar şi pentru actualizarea accelerată a înregistrărilor, sistemele de gestiune a bazelor de date utilizează interogări - cereri de căutare şi/sau de acţiune în conformitate cu aceste condiţii. Interogările sînt obiecte ale sistem elor de gestiune a bazelor de date care reprezintă adresări de căutare, analizare şi/sau de modificare a datelor bazei. Menţionăm că în calitate de surse de date, în afară de înregistrările tabelelor bazei, o interogare poate folosi rezultatele altei interogări, executate anterior. De exemplu, pentru a afişa lista profesorilor cu salariul maximal, se vor crea două interogări: prima interogare va găsi valoarea M a x a salariului maximal, iar a doua - va selecta din tabelul Profesori înregistrările cu valorile din cîmpul Salariu, egale cu M a x (adică egale cu rezultatul primei interogări). Interogările îndeosebi se utilizează pentru: - vizualizarea unui subset de înregistrări dintr-un tabel, fără a-l deschide; - afişarea într-un singur tabel a informaţiilor din cîteva tabele; - actualizarea datelor tabelelor (modificări, adăugări, excluderi de date); - efectuarea calculelor asupra valorilor cîmpurilor şi obţinerea informaţiilor noi; - crearea totalurilor, valorilor medii etc. În funcţie de tipul acţiunii şi de rezultate, interogările se clasifică în cele: a) de selecţie; b) de excludere a unor înregistrări; c) de m odificare a unor înregistrări; d) de creare a cîm pu rilor rezu lta n te ; e) de gru pare şi totalizare; f) încrucişate. I n te r o g ă rile d e se le c ţie sînt cereri formulate în baza unor condiţii logice. Ele selectează un subset de date din unul sau mai multe tabele legate între ele. De exemplu, căutarea elevilor născuţi pînă la 10 ianuarie 1992, afişarea elevilor clasei a 10-a B sînt interogări de selecţie. I n te r o g ă r ile d e e x c lu d e r e a u n o r în r e g is tr ă r i reprezintă cereri de eliminare dintr-un tabel a tuturor înregistrărilor care satisfac criteriile logice specificate. De exemplu, cererea de ştergere din tabelul E levi al bazei de date Liceu a informaţiilor despre elevii claselor a 12-a (în legătură cu absolvirea liceului) reprezintă o astfel de interogare. I n te r o g ă r ile d e m o d ific a r e a u n o r în r e g is tr ă r i schimbă valorile unui cîmp al tabelului după acelaşi algoritm. De exemplu, mărirea cu 50% a valorilor din cîmpul Salariu al tabelului P rofesori poate fi realizată cu ajutorul unei interogări de modificare. Uneori se pot solicita informaţii care trebuie afişate în cîmpuri noi. De exemplu, vîrsta elevilor se va prezenta într-un cîmp aparte. Cu acest scop se va utiliza o in te r o g a r e d e c r e a r e a c îm p u r ilo r r e z u lta n te . I n te r o g ă r ile d e g r u p a r e ş i to ta liz a r e se folosesc pentru sumarea datelor cîmpurilor, obţinerea valorilor medii, a celor minimale sau maximale etc. De exemplu, calcularea numărului total de ore pe săptămînă realizate în fiecare clasă a bazei de date Liceu se va face cu ajutorul unei interogări de grupare şi totalizare. I n te r o g ă r ile în c r u c iş a te sînt destinate prezentării compacte a informaţiilor sub formă de tabel. De exemplu, informaţia despre numărul săptămînal de ore rezervat fiecărei discipline în fiecare clasă poate fi afişată cu ajutorul unei interogări încrucişate sub forma următorului tabel: Anul_de_studii Nume_clasa Biologia Chimia ... 10 A 2 3 10 D 1 1 11 A 3 2 12 D 1 1 92 Aşa cum rezultatele interogărilor depind de informaţiile din tabele, modificările realizate asupra datelor din tabele vor atrage după sine modificarea rezultatelor interogărilor (evident după executarea lor repetată). La rîndul său, în cazul interogărilor a) - d), modificarea de către utilizator a rezultatelor interogării poate duce la schimbarea conţinutului tabelelor. Din aceste considerente rezultatul interogărilor a) - d) se numeşte set dinamic de date. Setul dinamic de date nu este constant, deci nu se memorează. El există doar pe parcursul execuţiei interogării. Pentru a crea o interogare nouă: 1. Selectăm clasa de obiecte Q u eries de pe bara de obiecte Objects. În zona de conţinut a ferestrei bazei de date apar opţiunile: - Create query in Design view (crearea interogării în regim de proiectare); - Create query by using wizard (crearea interogării cu ajutorul unui program de asistenţă). Executăm un dublu-clic pe prima opţiune. O b se rv a ţie : Pasul 1 este echivalent cu selectarea New -> Design View. 2. Apare fereastra interogării şi fereastra de dialog Show Table (fig. 9.1). Selectăm pe rînd tabelele necesare apăsînd de fiecare dată butonul Add. Tabelele alese (mai exact cîmpurile lor) apar în interiorul ferestrei interogării împreună cu reprezentarea grafică a relaţiilor dintre ele (fig. 9.2). Fig. 9.1 Fig. 9.2 3. Fereastra unei interogări este divizată în două zone. Zona superioară afişează denumirile cîmpurilor tabelelor. Zona inferioară afişează un formular QBE* în care programatorul poate folosi exemple de declaraţii parţiale sau expresii pentru a crea o interogare. Alegem cîmpurile care vor fi utilizate pentru scrierea criteriului de selecţie şi cîmpurile ale căror valori vor fi afişate. Adăugarea unui cîmp se face prin executarea unui dublu-clic pe denumirea lui sau prin selectarea şi „tragerea” acestui cîmp cu ajutorul mouse-ului. * Caracteristica QBE (Q uery by Exam ple) a fost creată iniţial pentru a permite utilizatorilor aplicaţiilor de bază de date să găsească şi să afişeze porţiuni de date fără a fi nevoiţi să ştie un limbaj de programare. pe parcursul timpului, aplicaţiile QBE au ajuns instrumente preferate pentru scrierea interogărilor. Majoritatea sistemelor de gestiune a bazelor de date şi-au dezvoltat propriile aplicaţii QBE, care permit formularea unui spectru larg de cereri de interogare. 93 Ordinea cîmpurilor afişate în formular poate fi schimbată în acelaşi mod ca şi ordinea coloanelor unui tabel afişate în regimul D a ta sh eet View. 4. Pentru fiecare cîmp adăugat în formularul QBE, în afară de cîmpul şi tabelul care conţine acest cîmp (afişate în rîndurile Field şi Table), se pot preciza: a) modul de sortare a înregistrărilor după acest cîmp (rîndul Sort) alegînd una din valorile A scen din g (crescător) sau D escen din g (descrescător); b) afişarea sau ascunderea valorilor cîmpului la executarea interogării (rîndul Show); c) o condiţie de selectare pe care o vor respecta valorile afişate (rîndurile C riteria şi or). 5. Putem afişa datele specificate de interogare pînă la salvarea ei prin selectarea comenzii D atasheet View din meniul View sau din lista derulantă -ţ de pe bara de instrumente Access. 6. Salvăm interogarea (instrumentul Save sau comanda cu acelaşi nume din meniul File). E x em p lu : În fig u ra 9.2 este prezentată în regim de proiectare o interogare care cere afişarea listei elevilor clasei a 10-a B, al căror prenume începe cu litera C. În figu ra 9.3 este arătată lista pînă la salvarea interogării. k LQ u e ry l : S e le ct Q u e ry [- □ X N um e e le v P re n e le v A n u l de studi Num e c la s a Bujor Călin 10 B Cozariuc Cătălina 10 B Mihalachi Cri st i na 10 B Record: M 1 1 ► 1 M +] of 3 Fig. 9.3 Întrebări si exerciţii » > O Cu ce scop se utilizează interogările? e Caracterizaţi principalele tipuri de interogări. e Descrieţi algoritmul de creare a unei interogări. O De ce rezultatul unor interogări se numeşte se t d in a m ic d e d a te? e Stabiliţi tipul următoarelor interogări: a) aflarea numărului de profesori de gen masculin şi a numărului celor de gen feminin; b) determinarea salariului mediu al profesorilor din baza de date Liceu; c) afişarea listei fetelor din clasele a 11-a; d) determinarea numărului de ore realizate săptămînal de fiecare profesor; e) căutarea profesorilor de gen feminin care predau în clasele a 10-a. © Examinaţi baza de date Liceu şi formulaţi două cereri de interogări: a) de selecţie; d) de creare a cîmpurilor rezultante; b) de excludere a unor înregistrări; e) de grupare şi totalizare; c) de modificare a unor înregistrări; f) încrucişate. 9.2. Interogări de selecţie Pornind de la faptul că interogările de selecţie sînt cele mai des utilizabile, Access stabileşte implicit acest tip pentru toate interogările nou-create. După cum vom vedea ulterior, utilizatorul trebuie să întreprindă acţiuni suplimentare pentru a schimba tipul interogării noi. Deci, pentru a crea o interogare de selecţie, vom alege tabelele şi cîmpurile necesare conform algoritmului descris în tema precedentă. 94 9.2.1. Criterii de selecţie j Un moment important în procesul de elaborare a unei astfel de interogări este scrierea criteriului de selecţie. > Dacă criteriul se formulează pentru un singur cîmp, atunci expresia logică, care va controla afişarea datelor, se scrie în celula C riteria a acestui cîmp. Menţionăm că operatorul Like este inserat automat de Access în cazul în care utilizatorul scrie un şablon de restricţionare a datelor. În particular, în celula C riteria se poate scrie o constantă de tip compatibil cu tipul valorilor cîmpului respectiv. E x em p lu : Pentru a afişa lista elevilor cu prenumele Ion, este suficient să se scrie în celula C riteria a cîmpului Pren_elev (din tabelul Elevi) şirul de caractere "Ion". Deoarece criteriile de selecţie sînt expresii logice Access, pentru scrierea lor pot fi utilizate funcţiile şi operatorii studiaţi în capitolul precedent, inclusiv cei logici. În acelaşi timp, formularul QBE oferă ajutor în crearea criteriilor compuse, formate din cîteva condiţii şi din operatorii AND şi/sau OR. Astfel: a) pentru un cîmp pot fi definite mai multe condiţii de selecţie legate între ele cu operatorul OR: prima se scrie în rîndul Criteria, iar celelalte - mai jos, cîte una în fiecare celulă; b) două sau mai multe condiţii din rîndul C riteria se consideră legate între ele cu operatorul AND. E xem ple: 1. Dacă în formularul interogării anterioare mai jos de valoarea "Ion" (în celula or) se va scrie "Vasile", atunci interogarea va afişa lista elevilor cu prenumele Ion sau Vasile. În cazul completării celulei C riteria din cîmpul N u m e_elev cu condiţia "B*", atunci interogarea va afişa lista elevilor cu prenumele Ion şi al căror nume începe cu litera "B". 2. Interogarea din figura 9.4 va afişa lista elevilor clasei a 11-a B născuţi în luna ianuarie. 3. Interogarea din fig u ra 9.5 va afişa lista elevilor din clasele 10-11 cu profil real. Evident, rezultatul va fi acelaşi dacă vom completa doar rîndul C riteria, substituind valoarea 10 cu expresia 10 OR 11. 4. Interogarea din fig u ra 9.6 va afişa lista profesorilor cu salariul lunar mai mare decît 2 500 lei şi mai mic sau egal cu 3 000 lei în ordinea crescătoare a acestor salarii. Fig. 9.4 Fig. 9.5 95 Evident, este imposibil de a prezice toate cererile de selecţie de care vor avea nevoie utilizatorii. Mai mult chiar, unele interogări se pot deosebi între ele doar prin unele valori din formularul QBE. De exemplu, interogările care vor afişa lista disciplinelor studiate în clasa a 10-a B, respectiv, în clasa a 11-a B, se vor deosebi doar prin valorile cîmpului A n u l_de_stu dii. În astfel de situaţii se poate crea o singură interogare, unde în loc de valoare, în cîmpul corespunzător, se va scrie un pa ra m etru . Un şir de caractere încadrat între simbolurile [ şi ], scris într-o celulă a rîndului C riteria este interpretat de Access drept parametru. Pentru fiecare parametru, la executarea interogării, mai întîi va apărea o fereastră de dialog în care utilizatorul va scrie valoarea parametrului (deci o valoare a cîmpului pentru care a fost creat parametrul), apoi se vor afişa înregistrările ale căror valori din cîmpul parametrului coincid cu valoarea scrisă de utilizator. De regulă, şirul de caractere ce defineşte parametrul este un text explicativ, care sugerează utilizatorului ce tip de valoare trebuie să scrie în fereastra de dialog. În mod implicit parametrul se consideră de tip Text. Pentru a modifica tipul parametrului, se va selecta Q u ery -> P aram eters. Va apărea fereastra Q u ery P aram eters, în care se va scrie fiecare parametru şi tipul lui. E x em p lu : În figu ra 9 .7 este reprezentată fereastra unei interogări de selecţie cu trei parametri: primul pentru cîmpul A nul_de_studii, al doilea - pentru cîmpul N um e_clasa, iar al treilea (de tip N u m ber) - pentru cîmpul N r_ore_saptam in a. Observăm că prin intermediul acestei interogări se poate afla lista disciplinelor studiate de elevii clasei indicate de utilizator, al căror număr de ore pe săptămînă este de asemenea specificat de utilizator. La executarea interogării din figu ra 9 .7 vor apărea pe rînd trei ferestre în care utilizatorul va preciza anul de studii, numele clasei (A, B, C sau D) şi, respectiv, numărul săptămînal de ore. 9.2.2. Interogări cu parametri Cod prut Nume_prof Pren_prof Data_prof Foto_prof 5a ariL Căsătorit Nuroe_prof Pren_prof Salariu Profesori Profesori Ascending Query! : Select Query Profesor O Ce constituie interogările de selecţie? e Care este rolul criteriului de selecţie într-o interogare? e Cu ce scop se folosesc parametrii într-o interogare? O Deschideţi baza de date Liceu. Creaţi o interogare de selecţie ce va afişa lista: a) fetelor bazei; b) diriginţilor; c) profesorilor născuţi pînă la 12 februarie 1970; d) profesoarelor născute în luna martie; e) băieţilor în ordine crescătoare a vîrstei lor; f) elevilor care nu au telefon; g) profesorilor de gen masculin care nu au îm plinit 50 de ani; h) elevilor născuţi vara; i) profesorilor al căror număr de telefon începe cu 022 48; j) elevilor care nu locuiesc în Chişinău; k) profesorilor al căror prenume începe cu litera a sau cu litera E; l) elevilor care nu învaţă Filosofia; m) elevilor care studiază Matematica 5 ore pe săptămînă. © Deschideţi baza de date Liceu. Creaţi o interogare de selecţie cu parametru ce va afişa lista: a) disciplinelor studiate de elevul specificat de utilizator; b) profesorilor care predau în clasa specificată de utilizator; c) profesorilor care locuiesc în localitatea specificată de utilizator; d) elevilor care studiază disciplina specificată de utilizator; e) profesorilor care predau disciplina specificată de utilizator. © Formulaţi şi creaţi 5 interogări de selecţie pentru baza de date Liceu. & pentru baza de date Liceu formulaţi şi creaţi 5 interogări de selecţie cu parametru. 9.3. Interogări de acţiune Interogările de acţiu n e se utilizează pentru a crea tabele noi în baza informaţiilor din tabelele existente şi/sau pentru a realiza modificări în aceste tabele. În fereastra bazei de date numele acestor interogări este precedat de semnul exclamării. Atenţie! Interogările de acţiune (cu excepţia celor care generează tabele) modifică conţinutul tabelelor. 9.3.1. interogări care generează tabele Interogările de selecţie extrag date din tabele şi le afişează doar la executarea interogării. Rezultatul unei astfel de interogări nu se păstrează (eventual într-un tabel). Cu acest scop, interogarea de selecţie poate fi transformată într-o interogare care va păstra rezultatul într-un tabel nou, deci va crea un tabel cu setul dinamic al interogării. Să alcătuim o interogare care va genera un tabel cu date despre elevii claselor a 10-a. 1. Elaborăm interogarea de selecţie corespunzătoare (fig. 9.8). 2. Din meniul Q u ery alegem M ake-T able Q uery... Apare fereastra M ake Table unde precizăm numele tabelului nou (de exemplu, C lasele_10) şi numele bazei de date în care va fi păstrat tabelul. Implicit, tabelul va fi creat în baza de date curentă. 3. Scriem numele tabelului, confirmăm prin apăsarea butonului OK, apoi salvăm interogarea. 97 Fig. 9.8 Fig. 9.9 4. Pentru a obţine tabelul C lasele_10, executăm interogarea recentă. Apare o fereastră cu mesaj de avertizare, în care confirmăm intenţia de creare a tabelului prin apăsarea butonului Yes. 9.3.2. Interogări de excludere a unor înregistrări Deseori apare necesitatea eliminării unor înregistrări din tabele. De exemplu, în cazul bazei de date Liceu să admitem că trebuie să excludem datele despre elevii claselor a 12-a (în legătură cu absolvirea liceului). 1. Aşa cum între tabelele C lase şi E levi există relaţia unu la mulţi, avînd caracteristica E xclu derea în cascadă a în reg istră rilo r (C a sca d e D elete R ela ted R ecords), este suficient să ştergem înregistrările din tabelul C lase care au valoarea cîmpului A n u l_ d e _ stu d ii egală cu 12. Invers nu este corect, deoarece tabelul E levi este subordonat tabelului C la se . 2. Elaborăm o interogare care afişează lista claselor. Din meniul Q u ery alegem D elete Q uery. În formularul QBE, în locul rîndurilor Show şi Sort, apare rîndul D elete. În celula C riteria a cîmpului A n u l_ d e_ stu d ii scriem 12 (fig. 9.9). 3. Salvăm interogarea. Ştergerea înregistrărilor se va realiza după executarea interogării. Atenţie! Aşa cum înregistrările şterse nu pot fi restabilite, se recomandă de afişat rezultatul interogării de selecţie înainte ca aceasta să fie transformată în una de excludere a înregistrărilor. Astfel, se va verifica corectitudinea acţiunii interogării. 9.3.3. Interogări de modificare a unor înregistrări Dacă valorile mai multor înregistrări ale unui cîmp pot fi transformate după acelaşi algoritm, atunci pentru automatizarea actualizărilor se va folosi o interogare de modificare. Să formulăm o interogare care va mări cu 50% valorile din cîmpul Salariu al tabelului P rofesori. 1. Creăm o interogare de selecţie care afişează valorile cîmpului Salariu. 2. Din meniul Q u e ry alegem U pdate Q u ery. În formularul QBE în locul rîndurilor S o rt şi S h ow apare rîndul U pdate To. Scriem expresia [Salariu]*1,5 în celula obţinută 98 la intersecţia rîndului U p d a te To şi a cîmpului S a la riu (fig. 9 .1 0 ). 3. Salvăm interogarea. Modificarea înregistrărilor se va realiza după executarea interogării. Atenţie! Interogările de modificare se execută o singură dată. La repetarea lor valorile se vor modifica din nou. Astfel, dacă vom executa de 2 ori ultima interogare, salariul profesorilor „se va mări” cu 125% în loc de 50%. 9.3.4. Interogări care adaugă înregistrări în tabele existente Fig. 9.10 Uneori trebuie să adăugăm într-un tabel înregistrări din alt tabel. De exemplu, fie tabelul E le v ii care conţine date despre elevii născuţi în luna mai. Dacă dorim să adăugăm în acest tabel înregistrările elevilor din tabelul E levi născuţi în luna iunie, vom proceda astfel: 1. Creăm o interogare de selecţie care va afişa lista elevilor născuţi în luna iunie. 2. Din meniul Q u ery alegem A p p e n d Q u ery. Apare fereastra M ake Table. Din lista derulantă Table N a m e selectăm E le v ii. 3. Salvăm, apoi executăm interogarea. Întrebări si exerciţii > > O Cu ce scop se utilizează interogările de acţiune? e Descrieţi algoritmul de creare a unei interogări: a) care generează tabele; c) de excludere a unor înregistrări; b) de modificare a unor înregistrări; d) care adaugă înregistrări în tabele existente. e Examinaţi baza de date Liceu. Creaţi o interogare ce va genera tabelul: a) T1 cu date despre profesorii de gen feminin; b) T2 cu date despre elevii născuţi în luna mai; c) T3 cu date despre diriginţii de clase; d) T4 cu date despre profesorii care predau matematica sau chimia; e) T5 cu date despre elevii care nu locuiesc în Chişinău. O Examinaţi baza de date Liceu. Elaboraţi o interogare ce şterge din tabelul: a) T1 datele despre profesorii născuţi vara; b) T2 datele despre elevii clasei a 11-a; c) T3 datele despre diriginţii claselor cu profil real; d) T4 datele despre profesorii care nu predau chimia; e) T5 datele despre elevii care locuiesc în Cricova. © Examinaţi baza de date Liceu. Alcătuiţi o interogare ce va: a) mări salariul profesorilor cu 500 de lei; b) micşora cu 300 de lei salariul profesorilor care predau doar o disciplină; c) mări cu 25% salariul profesorilor născuţi pînă la 01.01.1960. © Examinaţi baza de date Liceu. Creaţi o interogare ce va adăuga în tabelul: a) T1 date despre profesorii de gen masculin care predau matematica; b) T2 date despre elevii născuţi iarna; c) T3 date despre profesorii care nu sînt diriginţi şi locuiesc în Chişinău; d) T4 date despre profesorii care predau limba străină; e) T5 date despre elevii din Chişinău care învaţă în clasa a 10-a. 99 9.4.1. Interogări de creare a cîmpurilor rezultante (calculate) În capitolele precedente am menţionat că la proiectarea entităţilor unei baze de date relaţionale se vor exclude cîmpurile ale căror valori pot fi obţinute din cîmpurile rămase. Din aceste considerente în tabelul Elevi nu a fost inclus cîmpul Virsta. Valorile acestui cîmp depind de valorile cîmpului Data_elev. Să elaborăm o interogare care va afişa într-un cîmp nou vîrstele elevilor bazei de date Liceu. Interogarea nu va afecta structura şi datele tabelului Elevi. 1. Creăm o interogare de selecţie pe baza tabelului E levi. În primele două coloane ale formularului QBE includem cîmpurile N u m e_elev, Pren_elev, iar în locul denumirii coloanei a treia scriem expresia Virsta: DateDff(“yyyy”;[Data_elev];Date()). Menţionăm că V irsta este identificatorul cîmpului nou, iar funcţia D a te D iff(T ; D1; D2) returnează diferenţa exprimată în unităţi calendaristice T dintre datele D1 şi D2 (a se vedea tema F uncţii Access). Observăm că: - T este egal cu “yyyy”, deci exprimă ani; - D1 este [Data_elev], adică data naşterii elevului; - D2 este Date(), adică data curentă. 2. Salvăm interogarea. Cîmpul Virsta este dinamic. El există atît timp cît sînt afişate rezultatele interogării. 9.4.2. interogări de grupare şi totalizare Pentru a obţine rezultate bazate pe înregistrările unui sau ale mai multor tabele, se vor utiliza interogări de gru pare şi totalizare. Să definim o interogare care va afişa numărul total de elevi ai fiecărei clase din baza de date Liceu. 1. Creăm o interogare de selecţie pe baza tabelelor C lase şi E levi în care includem cîmpurile A n u l_ d e_ stu d ii, N u m e_clasa şi C od_elev. 2. Executăm un clic pe butonul Totals ([!]) de pe bara de instrumente. în formularul QBE apare rîndul Total (fig. 9.11). Completăm celulele acestui rînd: - în primele două coloane din listele derulante ale celulelor selectăm valoarea Group By (deoarece grupăm înregistrările după anul de studii şi numele clasei), iar 9.4. Interogări de totalizare i£ENi_elevi_cl(iS(i : Select Quen □ d ) ® A n u l _ d e _ s t u d i i N u m e c l a s a C o u n t O f C o d _ e l e v 1 0 4 2 9 1 0 B 1 8 1 0 C 3 7 1 0 D 3 1 1 1 A 3 3 1 1 B 2 6 1 1 C 2 2 1 1 D 2 3 1 2 A 2 2 1 2 B 2 4 1 2 C 2 0 | R eco rd : |TT| < l~ 1 of ll Fig. 9.11 Fig. 9.12 100 - în coloana a treia selectăm funcţia C ou n t (deoarece calculăm numărul de înregistrări ale cîmpului C od_elev). 3. Salvăm şi executăm interogarea. Rezultatul interogării este prezentat în figura 9.12. O b se rv a ţii: 1. Listele derulante ale celulelor rîndului Total oferă diferite fu n c ţii globale (funcţii aplicabile asupra grupurilor de celule de date) pentru obţinerea totalizărilor: Sum , M ax, M in , Avg, F irst etc. 2. În interogări de grupare şi totalizare, de asemenea, se pot formula criterii de selecţie. De exemplu, dacă pentru cîmpul C o d _ elev al interogării precedente se va scrie condiţia >25, atunci interogarea va afişa datele doar despre clasele al căror număr total de elevi este mai mare decît 25. 9.4.3. Interogări încrucişate Interogările încrucişate sînt interogări de totalizare care permit utilizatorului să stabilească exact modul în care vor fi afişate rezultatele sub formă tabelară. Astfel de interogări sînt recomandate în cazul unei cantităţi mari de date totalizatoare. La crearea unei interogări încrucişate se va ţine cont de următoarele restricţii: a) denumirile rîndurilor tabelului-rezultat pot fi valori din unul sau mai multe cîmpuri; b) denumirile coloanelor tabelului-rezultat pot fi valori doar ale unui singur cîmp; c) valorile celorlalte celule ale tabelului-rezultat sînt calculate cu ajutorul unei funcţii globale; d) înregistrările din rezultat nu pot fi ordonate după cîmpurile celulelor calculate. Să alcătuim o interogare care va afişa numărul total de ore rezervat fiecărei discipline în fiecare clasă a bazei de date L iceu. 1. Creăm o interogare de selecţie pe baza tabelelor Clase, D iscipline şi Prof_dis_clasa în care includem cîmpurile Anul_de_studii, N um e_clasa, N um e_disciplina şi N r_ore_saptam ina. 2. Din meniul Q u ery alegem C rosstab Q uery. În formularul QBE apar rîndurile Total şi C rosstab (fig. 9.13). 3. Completăm celulele rîndurilor Total şi C rosstab ca în fig u ra 9.13. Astfel, valorile cîmpurilor A nul_de_stu dii şi N u m e_clasa vor fi denumiri ale rîndurilor tabelului-rezultat, valorile cîmpului N u m e_d iscip lin a - denumiri ale coloanelor tabelului-rezultat, iar valorile cîmpului N r_o re_ sa p ta m in a vor fi sumate pentru a completa celelalte celule ale tabelului-rezultat (fig. 9.14). Fig. 9.13 Queryl : Crosstab Query □dl® Anul de. studii Nume_clasa Ei il olmgi a Chimia Educaţia civică ► mA 2 3 1 10 B 2 3 1 10 C 1 1 1 10 D 1 1 1 11 A 3 2 1 11 B 3 2 1 11 C 1 1 1 11 D 1 1 1 12 A 3 3 1 12 B 3 3 1 12 C 1 1 1 - 12 D 1 1 1 Fig. 9.14 101 Întrebări si exerciţii > 3 O Ce reprezintă interogările: a) de creare a cîmpurilor rezultante; b) de grupare si totalizare; c) încrucişate? e Descrieţi algoritmul de elaborare a unei interogări: a) de creare a cîmpurilor rezultante; b) de grupare şi totalizare; c) încrucişate. 0 Examinaţi baza de date Liceu. Aflaţi cu ajutorul unei interogări: a) vîrsta elevilor exprimată în zile; b) numărul de profesori de gen masculin şi numărul celor de gen feminin; c) numărul de clase la fiecare din profilurile real şi umanist; d) salariul mediu lunar al profesorilor; e) numărul de elevi din fiecare localitate; f) numărul de ore realizate săptămînal de fiecare profesor; g) numărul de ore realizate săptămînal de fiecare clasă; h) valoarea salariului minimal; i) profesorii care au salariul maximal; j) numărul de profesori care au salariul mai mic decît cel mediu. O Examinaţi baza de date Liceu. Formulaţi şi realizaţi două cereri de interogări: a) de creare a cîmpurilor rezultante; b) de grupare şi totalizare; c) încrucişate. Test de evaluare 1. Examinaţi baza de date Liceu. Creaţi o interogare ce va afişa lista: a) elevilor al căror prenume începe cu litera a ; b) elevilor născuţi joi; c) profesorilor care predau disciplina specificată de utilizator. 2. Examinaţi baza de date Liceu. Alcătuiţi o interogare ce va: a) adăuga în tabelul Elevicîmpul Adresa_Web, ale cărui valori vor fi formate în această ordine din numele, prenumele elevului şi secvenţa„@liceu.md". De exemplu, adresa Web a elevului Ion Popa va fi Popalon@liceu.md: b) genera tabelul Test cu date despre elevii care nu învaţă în clasele a 10-a A, a 11-a B, a 12-a C (inclusiv adresa Web descrisă în a)); c) elimina din tabelul Test datele despre elevii care învaţă în clasele a 10-a B, a 11-a C; d) modifica adresa Web a fiecărui elev din tabelul Test, substituind subşirul „liceu.md" cu secvenţa „elev.md"; e) adăuga în tabelul Test date despre elevii de gen feminin care învaţă în clasa a 10-a A; f) mări cu 40% salariul profesorilor cu vîrsta mai mare decît 40 de ani. 3. Examinaţi baza de date Liceu. Elaboraţi o interogare ce va afişa numărul: a) de elevi la fiecare din profilurile real şi umanist; b) elevilor de gen masculin şi numărul celor de gen feminin. 4. Creaţi o interogare încrucişată ce va afişa numărul elevilor în fiecare clasă a bazei de date Liceu (ca în figura 9.15). ' 4) Queryl: Crosstab Query | a -|| 0 |p£3^| Anul_de_studii Nume_clasa Real Umanist 10 A 29 10 B 18 1

Niciun comentariu:

Trimiteți un comentariu