[Access] Problème de requete.

Résolu/Fermé
Oz` Messages postés 31 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 21 mars 2008 - 17 sept. 2007 à 15:10
Oz` Messages postés 31 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 21 mars 2008 - 17 sept. 2007 à 15:35
Bonjour,

Je suis en train de dévellopper une application en Intranet (ASP, VbScript) et j'ai un petit soucis de requetes avec access.

J'ai une table AGENT qui contient AGT_ID(Primaire, auto increment) AGT_NOM et AGT_PRENOM
J'ai ensuite une table INSCRIPTION contenant INSC_ID(auto increment) OPERATION_ID(en rapport a une autre table) et AGENT_ID(clé etrangere d'AGT_ID).

-Il peut y avoir plusieurs agents inscrit sur la même opération.
-Il ne peuvent s'inscrire qu'une seul fois à la même opération.

J'aimerais recuperé la liste des agents non-inscrit à une operation par son id.

J'ai essayer avec plusieurs methodes mais rien n'y fait:
SELECT AGENT.AGT_ID, AGENT.AGT_PRENOM, AGENT.AGT_NOM
FROM AGENT, INSCRIPTION
WHERE AGENT_ID Not Like (SELECT AGENT_ID FROM INSCRIPTION WHERE OPERATION_ID LIKE 29); //Aucun resultat...

SELECT AGENT.AGT_ID, AGENT.AGT_PRENOM, AGENT.AGT_NOM
FROM AGENT, INSCRIPTION
WHERE AGENT_ID NOT LIKE AGENT_ID AND OPERATION_ID = 29); //doublons.

Je ne sais pas si SQL sous access differe de mysql, mais j'ai l 'impression que la premiere devrait marché non?

Merci d'avance.
A+

2 réponses

blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
17 sept. 2007 à 15:17
Salut,

tu as essayé NOT IN et non NOT LIKE ?

Sinon, il faut tenter les jointures LEFT JOIN et RIGHT JOIN (requête de non correspondance dans ACCESS), genre :
FROM B LEFT JOIN A ON B.IdB = A.Id
WHERE (((A.Id) Is Null));
--
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
-1
Oz` Messages postés 31 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 21 mars 2008 4
17 sept. 2007 à 15:35
Re,

Suite à ton conseil je viens de tester :

SELECT AGT_ID, AGT_NOM, AGT_PRENOM
FROM AGENT, INSCRIPTION
WHERE AGT_ID NOT IN (SELECT AGENT_ID FROM INSCRIPTION WHERE OPERATION_ID LIKE 29)

Ca m'as tout l air de fonctionner seulement j'ai des doublons, je rajoute donc DISTINCT AGT_ID au début.

Merci beaucoup ;)

@ plush
-1