Quelle différence de logique de traitement voyez vous entre :
et
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
?
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 :
Pensez-vous que ce soit un bug dans la résolution de l'algèbre relationnel de SQL serveur ?
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
Partager