Ordre entre les Outer Join
Quelle différence de logique de traitement voyez vous entre :
Code:
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:
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:
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 ?