Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Equivalent INTERSECT d'Oracle ?

1 réponse
Avatar
Service API
Bonsoir,

Merci d'excuser ma méconnaissance de MS SQL Server...

Je recherche l'équivalent de l'opérateur Sql d'Oracle 'INTERSECT' qui, pour
ceux qui ne connaissent pas, fonctionne de la façon suivante :

select Champ from Table where Condition1
INTERSECT
select Champ from Table where Condition2

La requête retournant alors les enregistrements qui satisfont à la fois la
Condition1 et à la Condition2

Oracle offre aussi les opérateurs UNION (là ça existe sous MS SQL Server) et
MINUS qui retourne les enregistrements qui satisfont à Condition1 mais pas à
Condition2.

On m'a suggéré pour remplacer INTERSECT d'utiliser cette astuce :

select Champ from Table where Condition1
and Champ in (select Champ from Table where Condition2)

Et pour MINUS celle-ci :

select Champ from Table where Condition1
and Champ not in (select Champ from Table where Condition2)

Mais j'aurais voulu savoir s'il n'y avait pas un opérateur équivalent à
INTERSECT et un à MINUS dans MS SQL Server ?

Merci

1 réponse

Avatar
EmanuelL
Bonjour,

D'après la doc (http://msdn.microsoft.com/fr-fr/library/ms188055.aspx),
depuis SQL Server 2005;

- Pour INTERSECT:
La requête suivant retourne toute valeur distincte renvoyée aussi bien
par la requête à gauche que celle à droite de l'opérande INTERSECT.

USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;

- Pour MINUS:
La requête suivante retourne toute valeur distincte qui est renvoyée
par la requête se trouvant à gauche de l'opérande EXCEPT, mais qui
n'est pas renvoyée par la requête de droite.

USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;


A+ ;-)

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org