|
||||
| Différence entre l'opérateur INTERSECT et INNER JOIN sous SQL Serveur 2005 |
| Tutoriaux - SQL |
|
Nous allons ici, éclaircir un peu la notion de INTERSECT et de INNER JOIN sous SQL Serveur 2005 car selon plusieurs courriels que j'ai reçu, certain on de la difficulté à différencier les 2 méthodes. INTERSECTL'opérateur INTERSECT de SQL Serveur 2005 est utilisé afin de récupérer les lignes communes de 2 tables. La plupart du temps, l'opérateur retourne le même résultat qu'avec un INNER JOIN. Lors de l'utilisation de l'opérateur, il faut que le nombre de champs de chaque requête soit le même et dans le même ordre. Il faut aussi que les types de champs soit les mêmes à des fins de compatibilité. Voici un exemple : Exemple :SELECT * FROM HumanResources.EmployeeDepartmentHistory Résultat :
Le résultat affiche chaque EmployeeID qui se trouve dans les 2 requêtes. INNER JOINExemple :SELECT va.VendorID,va.ModifiedDate FROM Purchasing.VendorContact vc Résultat :Le résultat affiche toutes les lignes qui sont présent dans les 2 tables. Par contre, cette requête affiche toute les lignes qui sont dans la première table et aussi toutes celles qui sont dans la seconde. Donc si vous observez, vous remarquerez que plusieurs lignes sont en double ce qui ne se produit pas avec l'opérateur INTERSECT. INNER JOIN avec DISTINCTExemple :SELECT DISTINCT va.VendorID,va.ModifiedDate FROM Purchasing.VendorContact vc Résultat :Le résultat affiche la même chose qu'avec l'opérateur INTERSECT. C'est donc dire, qu'il est possible de simuler l'opérateur INTERSECT depuis l'opérateur INNER JOIN. Par contre, cette méthode entraîne une légère perte de performance. Donc si vous pouvez, il est préférable d'utiliser l'opérateur INTERSECT, dans les autres cas, utiliser l'opérateur DISCINCT dans vos jointures.
Ajouter aux favoris
Bookmarker
Envoyer par mail
Vu: 770 Rétrolien(0)Adresse URI pour un rétrolien sur cet articleCommentaires (0)Ecrivez un commentaire |
| Mis à jour ( Jeudi, 07 Août 2008 09:15 ) |



.gif)
