Equivalent INTERSECT d'Oracle ?

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
EmanuelL
Le #19719681
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
Publicité
Poster une réponse
Anonyme