Bonjour à tous.
J'ai un problème dans l'écriture d'un requête...
Je cherche tous les "NUMERO" de la table "test" qui ont une ligne "A" mais pas de ligne "B" (soit 1 et 3)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE test ( NUMERO INTEGER, VALEUR CHAR(1) ) GO INSERT test VALUES (1,'A') INSERT test VALUES (2,'A') INSERT test VALUES (2,'B') INSERT test VALUES (3,'A') INSERT test VALUES (4,'B') GO
Je ne vois pas comment m'en sortir alors j'ai commencé par ceci :Résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM test A LEFT OUTER JOIN test B ON A.NUMERO = B.NUMERO WHERE A.VALEUR = 'A' AND B.VALEUR = 'B'
et bizarrement mon LEFT OUTER JOIN se comporte comme un INNER JOIN !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 NUMERO VALEUR NUMERO VALEUR 2 A 2 B
je m'attendais plutôt à un résultat comme celui-ci :
(puisque c'est un OUTER JOIN de A vers B je devrais avoir toutes les lignes de "A" non ?)
Quelque chose que je n'ai pas compris ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 A.NUMERO A.VALEUR B.NUMERO B.VALEUR 1 A NULL NULL 2 A 2 B 3 A NULL NULL
Comment résolvez vous mon problème de départ ? (les "NUMERO" qui ont une ligne "A" mais pas de ligne "B")
Merci !
Partager