Cet article explique les sous-requêtes non corrélées et corrélées dans SQL Server (Transact-SQL) avec exemple.
Sous-requête corrélée
Une sous-requête corrélée est la sous-requête dont la valeur dépend de la requête externe. La sous-requête corrélée est exécutée à plusieurs reprises, une fois pour chaque ligne sélectionnée par la sous-requête.
Dans la sous-requête corrélée, la sous-requête s’exécutera une fois et remplacera la valeur résultante dans la clause WHERE de la requête externe.
Remarque : Vous ne pouvez pas exécuter de sous-requête corrélée indépendamment de la requête externe.
Créons deux tables pour comprendre la sous-requête corrélée dans SQL Server (T-SQL).
Tableau des produits:
1
2
3
4
5
6
7
8
9
10
11
|
Créer une table ProductsTable
(
ID Clé primaire int,
Nom nvarchar(50 ),
Prix int,
Détails nvarchar(150)
)
Insérer dans les valeurs de table des produits (1, ‘Ordinateur portable’, 30000, ‘Un ordinateur portable pour les utilisateurs à domicile’)
Insérer dans les valeurs de table des produits (2, ‘Machine à laver’, 20000, ‘Machine à chargement frontal de couleur blanche’)
Insérer dans les valeurs de table des produits (3, ‘TV’, 22000, ‘Téléviseur LED HD 32 pouces’)
iv |
Ventes Tableau des Enregistrements:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Créer une table SaleRecordTable
(
Id int Identité de clé primaire,
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′)
|
, la requête récupérera le produit total vendu à partir de la table d’enregistrement des ventes. Dans la sous-requête, les données totales des produits vendus sont récupérées pour chaque ID de produit de la table des produits.
1
2
3
4
|
–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.
|
Sortie:
Si vous exécutez la sous-requête indépendamment, vous obtiendrez l’erreur suivante.
Sous-requête non corrélée
Une sous-requête non corrélée est une sous-requête indépendante des requêtes externes. Vous pouvez exécuter une sous-requête non corrélée indépendamment de la requête externe.
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)
|
Sortie:
Si vous exécutez la sous-requête indépendamment, cette fois, vous n’obtiendrez aucune erreur. La sortie sera:
J’espère que cet article vous a aidé à comprendre les sous-requêtes corrélées et non corrélées dans SQL Server. Veuillez poster vos commentaires pour les questions et les commentaires. Merci d’avoir lu.
- Bio
- Latest Posts
Derniers articles de Gyanendu Shekhar (tout voir)
- Utilisation d’un matériau transparent dans Unity 3D – 8 février 2021
- Mise en route de la boîte à outils UI: Tutoriel Unity 3D – 30 décembre 2020
- Utilisation d’événements dans Unity 3D – 2 mai 2020