T-SQL: Les Sous-Requêtes
Le T-SQL permet d’écrire deux types de
sous-requêtes dans une requête de base:
1.
Self-contained subqueries : Ce sont des
sous-requêtes internes qui n’ont pas une référence vers la requête de base
externe.
2.
Correlated subqueries : ce type de
sous-requêtes utilise des colonnes de la table déclarée dans la requête externe
de base. Dans ce cas, il faut utiliser différents alias pour ces deux tables.
Le prédicat EXISTS
Il
retourne une valeur Vrai ou Faux si les lignes de la
requête externe vérifient la condition de la sous-requête ou non
(respectivement). Voici sa syntaxe:
SELECT custid, companyname
FROM Sales.Customers AS C
WHERE EXISTS
(SELECT *
FROM Sales.Orders AS O
WHERE O.custid = C.custid
AND O.orderdate = '20070212')
Dans ce
cas, les tuples qui existent dans le résultat de la sous-requête
seront retournés.
Le prédicat IN
Permet
de retourner les lignes qui vérifient la condition : que les supplierID se
trouvent dans le sous-ensemble de la sous-requête.
SELECT productid, productname, unitprice
FROM Production.Products
WHERE supplierid IN
(SELECT supplierid
FROM Production.Suppliers
WHERE country = N'Japan');
On peut
utiliser le NOT pour nier les deux prédicats : IN et EXISTS, si on
veut récupérer les tuples qui se trouvent en dehors des sous-ensembles.
Comments
Post a Comment
Put your comments here, please.
Share with us you vision...