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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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