Syntaxe d'une requête avec IN() ou EXISTS()

Résolu
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 - 9 févr. 2005 à 21:48
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 - 10 févr. 2005 à 14:00
Bonsoir,

Je n'arrive pas à trouver la syntaxe correcte pour une requête que j'ai écrite à la base en utilisant NOT IN. Voici la requête :

Rs_Sup.Open "SELECT * FROM SUPPLEMENT WHERE Lib_Sup NOT IN(SELECT S.Lib_Sup, SUM(quantite) AS [Somme], Tar_Sup FROM Contenir AS C, COMMANDE AS CO, SUPPLEMENT AS S WHERE YEAR(Dat_Com)='" & annee & "' AND MONTH(Dat_Com)='" & mois & "' AND Valide_Com=1 AND C.Num_Com=CO.Num_Com AND S.Lib_Sup=C.Lib_Sup GROUP BY S.Lib_Sup, Tar_Sup) ORDER BY Lib_Sup", Cn

le message d'erreur de VB me dit "Une seule expression peut etre spécifiée dans la liste de sélection quand la sous requête n'est pas introduite par EXISTS".
J'ai bien cherché dans msdn et sur le site mais je n'arrive pas à comprendre comment articuler la fonction EXISTS.

Merci d'avance
A voir également:

2 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
10 févr. 2005 à 11:30
Tu peux faire un IN (ou un NOT IN) uniquement si tu compares le même nombre de champs !
Tu n'as donc plus besoin du GROUP BY et tu peux le remplacer par un DISTINCT

SELECT *
FROM
SUPPLEMENT
WHERE Lib_Sup
NOT IN
(
SELECT DISTINCT S.Lib_Sup<STRIKE>, SUM(quantite) AS [Somme], Tar_Sup</STRIKE>
FROM
Contenir AS C,
COMMANDE AS CO,
SUPPLEMENT AS S
WHERE YEAR(Dat_Com)= '" & annee & "'
AND MONTH(Dat_Com)='" & mois & "'
AND Valide_Com=1
AND C.Num_Com=CO.Num_Com
AND S.Lib_Sup=C.Lib_Sup
<STRIKE>GROUP BY S.Lib_Sup, Tar_Sup</STRIKE>
)
ORDER BY Lib_Sup

Si tu veux utiliser le NOT EXISTS, ça donne ceci :
SELECT *
FROM
SUPPLEMENT
WHERE NOT EXISTS
(
SELECT 1
FROM
Contenir AS C,
COMMANDE AS CO
WHERE YEAR(Dat_Com) ='" & annee & "'
AND MONTH(Dat_Com)='" & mois & "'
AND Valide_Com=1
AND C.Num_Com=CO.Num_Com
AND SUPPLEMENT.Lib_Sup=C.Lib_Sup
)
ORDER BY Lib_Sup
3
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
10 févr. 2005 à 14:00
Merci beaucoup,

Ah oui forcement, j'avais repris ma première requête et forcement le group by et les autres champs sont inutiles.
Petite question pour le NOT EXISTS, le 1 se réfèrè à quoi?
0
Rejoignez-nous