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

Popular posts from this blog