Baze de date

Cu SQL, puteți crea interogări imbricate. De obicei, interogarea internă generează o valoare care este bifată în condiția unei interogări externe.
Pentru a evalua o interogare externă (principală), SQL trebuie mai întâi să evalueze interogarea internă (sau subchetă) în cadrul clauzei WHERE. Rezultatul interogării interne este plasat în interogarea principală în locul subchetei.







SELECT icodCust
Din vânzări!
Unde yCredit <
(SELECT AVG (yCredit) de la client);

O interogare se numește corelată dacă datele sunt eșantionate în funcție de rezultatele unui alt eșantion.
Atunci când utilizați subqueries în SQL, puteți face referire la interogarea tabelului intern din clauza extern FROM. formând o subcotare corelată (sau corelată). În acest caz, subcheierea este executată în mod repetat, o dată pentru fiecare rând din tabela principală de interogare.







SELECT icodeCust, yCredit, cCity
Din vânzări! Client Cust_X
Unde yCredit> =
(SELECT AVG (yCredit) din vânzări! Client Cust_Y
WHERE Cust_Y.cCity = Cust_X.cCity);
Cust_X, Cust_Y - alias-uri de masă.

Deoarece se modifică valoarea din câmpul cCity al interogării externe, interogarea internă trebuie executată separat pentru fiecare șir de interogare extern.
Luați în considerare procedura de evaluare care produce interogarea corelată:
1. Selectați un rând din tabelul specificat în interogarea externă. Aceasta va fi linia curentă.
2. Salvați valorile din acest șir în alias cu numele din clauza FROM a interogării exterioare.
3. Rulați subdotarea. Oriunde se găsește aliasul dat pentru interogarea externă (în acest caz Cust_X), utilizați valoarea pentru linia curentă. Folosirea unei valori dintr-un șir de interogare extern într-o subchetă este denumită o referință externă.
4. Evaluați starea interogării externe pe baza rezultatelor subchetei executate la pasul 3. (Determinați dacă linia curentă va fi afișată).
5. Repetați procedura pentru rândul următor al tabelului și așa mai departe până când toate rândurile tabelului sunt bifate.







Articole similare

Trimiteți-le prietenilor: