cs_Eric25
Messages postés175Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention26 juin 2006
-
9 févr. 2005 à 21:48
cs_Eric25
Messages postés175Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention26 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:
Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par exists.
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 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
cs_Eric25
Messages postés175Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention26 juin 20063 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?