cokinoumasterflash
Messages postés62Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention19 août 2005
-
24 juin 2005 à 15:35
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 2011
-
24 juin 2005 à 16:54
Bonjour,
J'ai un petit problème de requete sousVBA.
J'ai 2 tables : echantillon et pollens
echantillon possede entre autre une clé primaire : N° éch
et un champ: site
pollens possède entre autre un champ : numech
Les 2 tables sont liées par N° éch <-> numech.
Je souhaiterai avoir en sortie tous les champs de la table pollens pour lesquels les numeros correspondent avec ceux de la table echantillon et dont le nom de site a été choisi par l'utilisateur.
Ma requete :
SELECT * FROM pollens
INNER JOIN echantillon
ON pollens.numech=echantillon.[N° éch]
WHERE (echantillon.[Site]= '" & sit & "'))
Le problème c'est que cette requete ne filtre rien du tout et me renvoie tous les éléments de ma table pollens......
J'ai beau tourner le problème dans tous les sens je ne vois pas ou est mon erreur.
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 24 juin 2005 à 16:54
T'as rien compris
Prends la requête que j'ai faite elle marche!
Je viens de la tester en live en recréant tes tables.
Tu n'as qu'à faire un copier coller...
SELECT echantillon.site, *
FROM pollens LEFT JOIN echantillon ON pollens.NumEch = echantillon.N°ech
WHERE (((echantillon.site)='" & sit & "'));"
TBBUIM
cokinoumasterflash
Messages postés62Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention19 août 20057 24 juin 2005 à 16:02
Pour répondre à ta question mes pollens ne sont pas dans ma table échantillons mais dans une table pollens. Ces 2 tables étant reliées entre elles par le numero d'echantillon.
Je vais essayer de réexpliquer :
en fait je demande à l'utilisateur de choisir un nom de site (ma variable sit). A partir de la je veux choisir tous mes enregistrements de ma table echantillon tels que le nom de site correspond avec le choix de l'utilisateur.
Ensuite, ces enregistements étant reliés à des pollens dans ma table pollens par le numero d'echantillon, je voudrais avoir en sorti tous les pollens ayant ces même numeros d'échantillon
Je sais pas si j'ai été vraiment plus clair là !
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 24 juin 2005 à 16:21
Il semble y avoir une parenthèse en trop dans ta requête
Et en faisant un INNER join tu joins tous les champs de la table
Tandis qu'en faisant un left join, tu inclus tous les enregistrements
de la table pollens et seulement ceux de la table échantillons pour
lesquels les champs joints sont égaux (choix 2 sous access) Crée ta
requête avec l'assitant et choisi la propriété de jointure N°2
Essayes ça:
SELECT echantillon.site, *
FROM pollens LEFT JOIN echantillon ON pollens.NumEch = echantillon.N°ech
WHERE (((echantillon.site)='" & sit & "'));"
TBBUIM
Vous n’avez pas trouvé la réponse que vous recherchez ?
omsylv
Messages postés69Date d'inscriptionlundi 3 janvier 2005StatutMembreDernière intervention15 septembre 2005 24 juin 2005 à 16:21
Salut,
D'après moi c'est normal que ça ne marche pas. Il faut que tu fasses
une première requête qui te trouve les numéro d'échantillons
correspondant au site (que la table échantillons)
et pour chaque résultat (pour chaque ligne de ton recordset) il faut que tu fasses une requête du type
Select * from pollen where numech = " &
rligne du recordset & ";"