Presentation is loading. Please wait.

Presentation is loading. Please wait.

Subinterogări multiple

Similar presentations


Presentation on theme: "Subinterogări multiple"— Presentation transcript:

1 Subinterogări multiple

2 Reactualizarea cunoștințelor
Definiți subinterogarea O interogare aflată în interiorul unei alte comenzi SQL se numeşte subinterogare. Care este principiul de execuție al subinterogărilor? Subinterogările sunt întotdeauna rulate înaintea comenzii în care sunt incluse, doar pe baza rezultatelor returnate de subinterogări putându-se obţine rezultatele interogării exterioare subinterogării. Din ce tabele putem prelua informatii cu ajutorul subinterogărilor? din aceeaşi tabelă sau din alte tabele

3 Reactualizarea cunoștințelor
Câte tipuri de subinterogări cunoașteți? subinterogări simple care returnează o singură linie; subinterogări multiple care returnează mai multe linii şi/sau mai multe coloane. Care sunt restricțiile de construire a interogărilor? o subinterogare va fi întotdeauna inclusă în paranteze subinterogarea NU poate conţine clauza ORDER BY. Care sunt operatorii folosiți pentru compararea valorilor returnate de subinterogările simple? operatorii <, >, <=, >=, <>, =.

4 Utilizând tabelele employees, departments și locations afișați:
Angajaţii care au acelaşi şef ca şi angajatul Ellen. Primul angajat din firmă (data angajarii cea mai veche) Numele departamentelor care au locația Seattle? Angajații care au salariul mai mare decat Lorentz si sunt in același departament cu Abel.

5 Angajații cu salariul cel mai mic și cel mai mare din firma
Toți angajații care au același job_id ca Rajs și au fost angajați după Davies. Department id-urile și salariile medii(cu 2 zecimale), pentru care media salariilor e mai mare decat salariul lui Ernst.

6 Suplimentar… job_id-ul cu cei mai mulţi angajaţi.
Afișați department id-urile și salariile minime ale tuturor angajatilor, grupați după department ID, având salariul minim mai mare decât salariul minim al angajaților al căror department ID e diferit de 50. Angajații care au același an de angajare ca și cel mai recent angajat din departamentul 60

7 În această lecție veți învăța:
Să definiți subinterogările multiple Să identificați situațiile în care se folosesc subinterogările multiple Să scrieți subinterogări multiple folosind cuvintele cheie și operatorii permiși

8 Subinterogări multiple
returnează mai multe linii. Când o subinterogare returnează mai mult de o linie, nu mai este posibil să folosim operatorii de comparaţie <, >, <=, >=, <>, = Va trebui să comparăm o valoare simplă cu fiecare valoare din setul de valori returnate de subinterogare. se folosesc cuvintele cheie IN sau ANY și ALL împreună cu operatorii de comparație.

9 Subinterogări multiple cu operatorul IN
Al cui salariu este egal cu cel al angajatilor din departamentul 20 ? SELECT * FROM employees WHERE salary IN ( SELECT salary FROM employees WHERE department_id=20) Afișați toate titlurile CD-urilor din d_cds care au acelasi an ca și CD-urile care au numarul mai mic ca 93 SELECT title, year FROM d_cds WHERE year IN (SELECT year FROM d_cds WHERE cd_number < 93);

10 Subinterogări multiple cu ALL
Afișați angajații care au salariul mai mare decât al toturor angajaților pentru care manager_id este 100: SELECT first_name,salary,job_id FROM employees WHERE salary > ALL ( SELECT salary FROM employees WHERE manager_id=100 )

11 Subinterogări multiple cu ALL
Afișați angajații care au salariul mai mic decât al tuturor angajaților pentru care manager_id este 100: SELECT first_name,salary,job_id FROM employees WHERE salary < ALL ( SELECT salary FROM employees WHERE manager_id=100 )

12 Concluzie… operatorul > ALL se poate interpreta ca mai mare decât valoarea maximă din mulţimea de valori returnată de către subinterogare. operatorul <ALL se poate interpreta ca mai mic decât valoarea minimă din mulţimea valorilor returnate de către subinterogare

13 Subinterogări multiple cu ANY
Afișați angajații care au salariul mai mic decât al oricarui angajat pentru care manager_id este 100: SELECT first_name,salary,job_id FROM employees WHERE salary < ANY ( SELECT salary FROM employees WHERE manager_id=100 )

14 Subinterogări multiple cu ANY
Afișați angajații care au salariul mai mare decât al oricarui angajat pentru care manager_id este 100: SELECT first_name,salary,job_id FROM employees WHERE salary > ANY ( SELECT salary FROM employees WHERE manager_id=100 )

15 Concluzie… operatorul >ANY poate fi interpretat ca mai mare decât valoarea minimă din mulţimea de valori returnată de către subinterogare. similar operatorul <ANY se poate interpreta ca mai mic decât valoarea maximă din mulţimea valorilor returnate către subinterogare

16 Valorile NULL Dacă una dintre valorile returnate de către subinterogarea interioară este nulă atunci interogarea exterioară … dacă este folosită opţiunea ALL => nu va afişa nicio linie SELECT last_name, employee_id FROM employees WHERE commission_pct >ALL (SELECT commission_pct FROM employees where manager_id=100) => No data found

17 NULL dacă este folosită opţiunea ANY sau IN => se vor afișa liniile corespunzătoare ignorând valoarea NULL. SELECT last_name, employee_id FROM employees WHERE commission_pct > ANY (SELECT commission_pct FROM employees where manager_id=100) SELECT last_name, employee_id,commission_pct FROM employees WHERE commission_pct IN (SELECT commission_pct FROM employees where manager_id=100)

18 In concluzie

19 Aplicații Afişaţi numele şi localitatea pentru angajaţii care au salariul mai mic decât cel puţin al unui angajat a cărui funcţie este manager. Să se afişeze toţi angajaţii care au un salariu mai mare decât cel puţin al unui angajat din departamentul 50. Să se afişeze angajaţii care sunt mai noi în firmă decât toţi angajaţii din departamentul 110. Să se afişeze angajaţii care au mai multă vechime decât cel puţin un angajat din departamentul 20. Să se afişeze toţi angajaţii care au acelaşi salariu cu angajaţii din departamentul 20. Să se afişeze toţi angajaţii care nu s-au angajat în acelaşi an cu angajaţii din departamentul 60. Afișați last names ale angajaților ale căror salarii sunt egale cu salariul minim pentru oricare departament.


Download ppt "Subinterogări multiple"

Similar presentations


Ads by Google