Quelle différence de logique de traitement voyez vous entre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT *
FROM entiers E
RIGHT JOIN Pairs P ON P.valeur= E.valeur
RIGHT JOIN impairs I ON I.valeur= E.valeur
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT *
FROM entiers E
RIGHT JOIN impairs I ON I.valeur= E.valeur
RIGHT JOIN Pairs P ON P.valeur= E.valeur
?

De manière étrange les 2 requêtes :
1- produisent des résultats
2- produisent des résultats différents
3- ne produisent pas de résultat logique par rapport à l'écriture

*****
Pour ceux qui veulent s'amuser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
CREATE TABLE Entiers (valeur int) ;
GO
CREATE TABLE Pairs (valeur int);
GO
CREATE TABLE impairs (valeur int);
 
GO
INSERT INTO Entiers VALUES (0),(1),(2);
INSERT INTO Pairs VALUES (0),(2),(4),(6),(8);
INSERT INTO impairs VALUES (0),(1),(3),(5),(7),(9);
 
SELECT *
FROM entiers E
RIGHT JOIN Pairs P ON P.valeur= E.valeur
RIGHT JOIN impairs I ON I.valeur= E.valeur 
--intersect
SELECT *
FROM entiers E
RIGHT JOIN impairs I ON I.valeur= E.valeur
RIGHT JOIN Pairs P ON P.valeur= E.valeur
Pensez-vous que ce soit un bug dans la résolution de l'algèbre relationnel de SQL serveur ?