logo

SQL | Subinterogări în Clauza From

Subinterogările SQL sunt funcții valoroase care ne permit să încorporam o interogare într-o altă interogare, adăugând mai multă importanță regăsirii și manipulării datelor într-un mod complicat. Este folosit pentru configurarea tabelelor temporale sau rezultatele intermediare care să fie utilizate ulterior de interogarea exterioară.

Subinterogare în clauza FROM

Clauza FROM poate fi folosită pentru a specifica o expresie de subinterogare în SQL. Relația produsă de subinterogare este apoi utilizată ca o nouă relație pe care interogarea exterioară este aplicată pentru operațiuni ulterioare. Subinterogări înFROMclauza este folosită atunci când trebuie să creăm un set de date temporar care nu există în niciun tabel fizic. Acest lucru poate fi extrem de util atunci când lucrați cu seturi de date complexe.

atașare șir de caractere java

Variabilele de corelare din tabelele la care se face referire în clauza FROM a interogării externe nu pot fi utilizate direct în subinterogările din clauza FROM. Mai jos sunt prezentate două sintaxe de utilizare a Subquery în clauza FROM utilizată în diferite scenarii.



1. Subinterogare simplă înFROMClauză:

SELECTAȚI coloana1 coloana2

FROM (SELECT column_x AS C1 column_y FROM condiția tabel WHERE) AS subquery_table

js settimeout

WHERE stare_exterioară;

2. Subinterogare înFROMClauza cuJOIN:

SELECTAȚI coloana1 coloana2

FROM (SELECT column_x AS C1 column_y FROM tabel WHERE PREDICATE_X) AS table2

JOIN table1 ON table2.some_column = table1.some_column

Java compara șiruri

UNDE PREDICAT;

Parametri:

  • Subinterogare : Interogarea interioară cuprinsă între paranteze. Acesta preia date care vor acționa ca un tabel temporar.
  • Alias : Subinterogării trebuie să primească un alias (subquery_table) pentru a fi referite în interogarea exterioară.
  • Interogare exterioară : Interogarea exterioară poate funcționa apoi cu acest tabel temporar creat de subinterogare aplicând filtre sau efectuând operațiuni ulterioare.

Cum funcționează subinterogările din clauza FROM

  • Evaluare subinterogare : Sub-interogarea din clauza from este evaluată mai întâi și apoi rezultatele evaluării sunt stocate într-o nouă relație temporară. 
  • Interogare exterioară : După ce subinterogarea execută și returnează un set de date, interogarea exterioară este evaluată selectând numai acele tupluri din relația temporară care satisface predicatul din clauza where a interogării externe.

Exemplu de utilizare a subinterogării în clauza FROM

Să discutăm câteva exemple din lumea reală pentru a înțelege cum funcționează în practică subinterogările din clauza FROM. Aici avem două tabele Instructor tabel care conține informații despre instructori, inclusiv salariul și departamentul acestora. Altul este Departament tabel care conține informații despre diferite departamente, inclusiv bugetul departamentului.

Instructor Masă 

ID instructorNumeDepartamentSalariu
44547SmithInformatică95000
44541Proiect de legeElectric55000
47778SingurȘtiințe umaniste44000
48147ErikMecanic80000
411547BalsamTehnologia de informație65000
48898JenaCivil50000

Departament Masă

Numele departamentuluiBuget
Informatică100000
Electric80000
Științe umaniste50000
Mecanic40000
Tehnologia de informație90000
Civil60000

Exemplul 1: Găsiți toți profesorii al căror salariu este mai mare decât bugetul mediu al tuturor departamentelor. 

În acest exemplu vom folosi o subinterogare în clauza FROM pentru a calcula bugetul mediu al tuturor departamentelor și apoi vom face comparația cu salariile instructorilor.

Interogare:   

SELECT I.InstructorID I.Name I.Department I.Salary  
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;

Ieșire  

ID instructorNumeDepartamentSalariu
44547SmithInformatică95000
48147ErikMecanic80000

Explicaţie:

an luna
  • Bugetul mediu al tuturor departamentelor din relația de departament este de 70000.
  • Erik și Smith sunt singurii instructori din relația de instructor al căror salariu este mai mare de 70000 și, prin urmare, sunt prezenți în relația de ieșire. 

De ce să folosiți subinterogări în clauza FROM?

Există diverse avantaje ale utilizării subinterogărilor în clauza FROM, după cum este prezentat mai jos:

  • Simplificare : pot simplifica interogările complexe, împărțindu-le în părți mai mici, mai ușor de gestionat. Nu trebuie să creați tabele temporare în mod explicit în baza de date.
  • Lizibilitate îmbunătățită : Folosirea subinterogărilor în clauza FROM face interogarea mai lizibilă din moment ce împarte > Flexibilitate : subinterogările vă permit să efectuați operațiuni care, altfel, ar fi incomode, cum ar fi agregarea sau filtrarea cu privire la alte seturi de date, fără a fi necesar să creați tabele intermediare.

Concluzie

Subinterogările din clauza FROM ne permit să definim  seturi temporare de rezultate care poate fi utilizate de interogări externe. Ele fac operațiunile SQL complexe mai ușoare, îmbunătățesc lizibilitatea interogărilor și oferă flexibilitate în filtrarea și agregarea datelor. A ști cum utiliza subinterogări în clauza FROM este o abilitate de de bază pentru fiecare practician SQL , în special când se tratează cu baze de date complexe sau când trebuie  să efectueze o analiză complexă de date.

Creați un test