Acest articol explică despre subquery necorelate și corelate în SQL Server (Transact-SQL) cu exemplu.
subinterogare corelată
o subinterogare corelată este subinterogarea a cărei valoare depinde de interogarea exterioară. Subinterogarea corelată este executată în mod repetat, o dată pentru fiecare rând selectat de subinterogare.
în subinterogarea corelată subinterogarea va fi executată o singură dată și va înlocui valoarea rezultată în clauza WHERE a interogării exterioare.
notă: nu puteți executa Subinterogări corelate independent de interogarea exterioară.
să creăm două tabele pentru a înțelege subinterogarea corelată în SQL Server (T-SQL).
produse de masă:
1
2
3
4
5
6
7
8
9
10
11
|
creați tabelul productstable
(
id cheie primară int,
nume nvarchar(50),
pret int,
detalii nvarchar(150)
)
introduceți în valorile produselor (1, ‘Laptop’, 30000, ‘un laptop pentru utilizatorii casnici’)
introduceți în valorile produselor (2, ‘Mașină de spălat’, 20000, ‘mașină de încărcare frontală de culoare albă ‘)
introduceți în valorile produselor (3, ‘TV’, 22000, ‘televizor LED HD de 32 inch’)
introduceți în valorile produselor (4, ‘frigider’, 30000, ‘190 Ltr frigider cu ușă dublă’)
|
tabel record de vânzări:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
creați tabelul salerecordtable
(
id int cheie primară identitate,
ProductID int,
soldquantity int,
SaleDate Date
)
Insert into SaleRecordTable Values (2, 3, ’10-10-2016′)
Insert into SaleRecordTable Values (3, 5, ’10-10-2016′)
Insert into SaleRecordTable Values (2, 2, ’11-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’11-10-2016′)
Insert into SaleRecordTable Values (2, 6, ’12-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’13-10-2016′)
|
interogarea va prelua produsul total vândut din tabelul de înregistrări de vânzări. În subinterogare total produs vândut datele sunt preluate pentru fiecare ID produs de tabel produse.
1
2
3
4
|
–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) ca ‘cantitate totală vândută’
din Produsstable
|
ieșire:
dacă va rula subquery independent, atunci veți obține următoarea eroare.
subinterogare necorelată
o subinterogare necorelată este o subinterogare independentă de interogările exterioare. Puteți executa subinterogarea necorelată independent de interogarea exterioară.
1
2
3
4
|
–Non correlated query
Select ID, Name, Details
From ProductsTable
Where ID = (Select ProductID from SaleRecordTable Where SaleDate =’10-10-2016′ AND ProductID =2)
|
Output:
dacă veți rula subquery independent, atunci de data aceasta nu veți primi nici o eroare. Rezultatul va fi:
Sper că acest articol v-a ajutat să înțelegeți subquery-ul corelat și necorelat în SQL Server. Vă rugăm să postați comentariile dvs. pentru întrebări și feedback. Mulțumesc pentru lectură.
- Bio
- Latest Posts
ultimele postări de gyanendu Shekhar (vezi toate)
- folosind material transparent în UNITY 3D – 8 februarie 2021
- Noțiuni de bază cu UI Toolkit : tutorial Unity 3D – 30 decembrie 2020
- folosind evenimente în UNITY 3D – 2 mai 2020