Petit probl=E8me SQL sous ACCESS :=20
Soit trois tables :=20
T1 Table principale=20
T2 Table d'enregistrements =E0 importer dans T1=20
T3 Table d'enregistrements en doublons dans T2 par rapport=20
=E0 T1=20
Les doublons sont d=E9termin=E9s =E0 partir d'une cl=E9 compos=E9e=20
de trois champs=20
numAct, numLieu, datAct.=20
Je veux supprimer les doublons de la T2.=20
J'ai b=E2ti une requ=EAte du style :=20
set dbBaseCourante =3D currentDB
strSQL =3D "DELETE T2.* FROM T2 WHERE (T2.numAct,=20
T2.numLieu, T2.datAct) in (SELECT numAct, numLieu, datAct=20
FROM T3);"=20
=20
dbBaseCourante.execute strSQL
Il n'aime pas les virgules dans ma clause WHERE.=20
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Aba
Votre syntaxe n'est pas correcte. Vous ne pouvez sélectionner qu'un champ dans la clause IN; Vous pouvez par contre utiliser la syntaxe suivante : strSQL = "DELETE T2.* FROM T2 WHERE EXISTS (SELECT 1 FROM T3 WHERE T2.numAct=T3.numAct AND T2numLieu=T3.numLieu AND T2.datAct=T3.datAct )"
"Brett" a écrit dans le message de news:1f3a401c45792$26462730$ Bonjour,
Petit problème SQL sous ACCESS : Soit trois tables : T1 Table principale T2 Table d'enregistrements à importer dans T1 T3 Table d'enregistrements en doublons dans T2 par rapport à T1
Les doublons sont déterminés à partir d'une clé composée de trois champs numAct, numLieu, datAct.
Je veux supprimer les doublons de la T2.
J'ai bâti une requête du style :
set dbBaseCourante = currentDB
strSQL = "DELETE T2.* FROM T2 WHERE (T2.numAct, T2.numLieu, T2.datAct) in (SELECT numAct, numLieu, datAct FROM T3);"
dbBaseCourante.execute strSQL
Il n'aime pas les virgules dans ma clause WHERE.
Cette syntaxe est-elle correcte sous ACCESS ?
Sinon quelles solutions proposez-vous ?
Merci
Votre syntaxe n'est pas correcte. Vous ne pouvez sélectionner qu'un champ
dans la clause IN;
Vous pouvez par contre utiliser la syntaxe suivante :
strSQL = "DELETE T2.* FROM T2 WHERE EXISTS (SELECT 1 FROM T3 WHERE
T2.numAct=T3.numAct AND T2numLieu=T3.numLieu AND T2.datAct=T3.datAct )"
"Brett" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:1f3a401c45792$26462730$a501280a@phx.gbl...
Bonjour,
Petit problème SQL sous ACCESS :
Soit trois tables :
T1 Table principale
T2 Table d'enregistrements à importer dans T1
T3 Table d'enregistrements en doublons dans T2 par rapport
à T1
Les doublons sont déterminés à partir d'une clé composée
de trois champs
numAct, numLieu, datAct.
Je veux supprimer les doublons de la T2.
J'ai bâti une requête du style :
set dbBaseCourante = currentDB
strSQL = "DELETE T2.* FROM T2 WHERE (T2.numAct,
T2.numLieu, T2.datAct) in (SELECT numAct, numLieu, datAct
FROM T3);"
Votre syntaxe n'est pas correcte. Vous ne pouvez sélectionner qu'un champ dans la clause IN; Vous pouvez par contre utiliser la syntaxe suivante : strSQL = "DELETE T2.* FROM T2 WHERE EXISTS (SELECT 1 FROM T3 WHERE T2.numAct=T3.numAct AND T2numLieu=T3.numLieu AND T2.datAct=T3.datAct )"
"Brett" a écrit dans le message de news:1f3a401c45792$26462730$ Bonjour,
Petit problème SQL sous ACCESS : Soit trois tables : T1 Table principale T2 Table d'enregistrements à importer dans T1 T3 Table d'enregistrements en doublons dans T2 par rapport à T1
Les doublons sont déterminés à partir d'une clé composée de trois champs numAct, numLieu, datAct.
Je veux supprimer les doublons de la T2.
J'ai bâti une requête du style :
set dbBaseCourante = currentDB
strSQL = "DELETE T2.* FROM T2 WHERE (T2.numAct, T2.numLieu, T2.datAct) in (SELECT numAct, numLieu, datAct FROM T3);"
dbBaseCourante.execute strSQL
Il n'aime pas les virgules dans ma clause WHERE.
Cette syntaxe est-elle correcte sous ACCESS ?
Sinon quelles solutions proposez-vous ?
Merci
Brett
-----Message d'origine----- Votre syntaxe n'est pas correcte. Vous ne pouvez sélectionner qu'un champ
dans la clause IN; Vous pouvez par contre utiliser la syntaxe suivante : strSQL = "DELETE T2.* FROM T2 WHERE EXISTS (SELECT 1 FROM T3 WHERE
T2.numAct=T3.numAct AND T2numLieu=T3.numLieu AND T2.datAct=T3.datAct )"
Génial c'est bon.
J'oublie toujours qu'existe EXISTS... Merci beaucoup !!!
-----Message d'origine-----
Votre syntaxe n'est pas correcte. Vous ne pouvez
sélectionner qu'un champ
dans la clause IN;
Vous pouvez par contre utiliser la syntaxe suivante :
strSQL = "DELETE T2.* FROM T2 WHERE EXISTS (SELECT 1
FROM T3 WHERE
T2.numAct=T3.numAct AND T2numLieu=T3.numLieu AND
T2.datAct=T3.datAct )"
Génial c'est bon.
J'oublie toujours qu'existe EXISTS...
Merci beaucoup !!!