Bonjour à tous.

J'ai un problème dans l'écriture d'un requête...
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 cherche tous les "NUMERO" de la table "test" qui ont une ligne "A" mais pas de ligne "B" (soit 1 et 3)

Je ne vois pas comment m'en sortir alors j'ai commencé par ceci :
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'
Résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
NUMERO	VALEUR	NUMERO	VALEUR    
2	A	2	B
et bizarrement mon LEFT OUTER JOIN se comporte comme un INNER JOIN !!!
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 ?)
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
Quelque chose que je n'ai pas compris ?

Comment résolvez vous mon problème de départ ? (les "NUMERO" qui ont une ligne "A" mais pas de ligne "B")

Merci !