OVH Cloud OVH Cloud

Insert Into sans doublons

3 réponses
Avatar
caro
Bonjour =E0 tous,

je fais un INSERT INTO tab1.chp1, tab1.chp2 SELECT tab2.chp1,tab2,chp2
FROM tab2 WHERE....
et je voudrai que seuls les enregistrements qui n'existent pas dans
tab1 soient ins=E9r=E9s. Bien entendu (tab1.chp1,tab1.chp2) ne constitue
pas une cl=E9. Dois-je ajouter =E0 ma requ=EAte d'insertion, dans la
clause where un NOT IN SELECT tab1.chp1, tab1.chp2.... ou existe -il
une ruse pour ne pas ajouter un select dans la clause where.

merci de votre aide

3 réponses

Avatar
Eric
Bonjour caro,

Tu peux te passer d'une clause Where avec un Not IN (select...) en
utilisant une requête avec jointure externe pour trouver les valeurs
présentes dans T2 et absentes de T1 (requête de non correspondance si tu
préfères).

Ca devrait donner quelque chôse comme :

INSERT INTO T1(chp1,chp2)
SELECT T2.chp1, T2.chp2
FROM T2 left JOIN T1 ON T2.chp1 = T1.chp1 and T2.chp2=T1.chp2
WHERE IsNull(T1.chp2) and IsNull(T1.chp1);

A tester, évidemmment, sur une copie de la table T1.

Bonjour à tous,

je fais un INSERT INTO tab1.chp1, tab1.chp2 SELECT tab2.chp1,tab2,chp2
FROM tab2 WHERE....
et je voudrai que seuls les enregistrements qui n'existent pas dans
tab1 soient insérés. Bien entendu (tab1.chp1,tab1.chp2) ne constitue
pas une clé. Dois-je ajouter à ma requête d'insertion, dans la
clause where un NOT IN SELECT tab1.chp1, tab1.chp2.... ou existe -il
une ruse pour ne pas ajouter un select dans la clause where.

merci de votre aide



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
caro
Merci ça marche!!!

Bonjour caro,

Tu peux te passer d'une clause Where avec un Not IN (select...) en
utilisant une requête avec jointure externe pour trouver les valeurs
présentes dans T2 et absentes de T1 (requête de non correspondance si tu
préfères).

Ca devrait donner quelque chôse comme :

INSERT INTO T1(chp1,chp2)
SELECT T2.chp1, T2.chp2
FROM T2 left JOIN T1 ON T2.chp1 = T1.chp1 and T2.chp2=T1.chp2
WHERE IsNull(T1.chp2) and IsNull(T1.chp1);

A tester, évidemmment, sur une copie de la table T1.

Bonjour à tous,

je fais un INSERT INTO tab1.chp1, tab1.chp2 SELECT tab2.chp1,tab2,chp2
FROM tab2 WHERE....
et je voudrai que seuls les enregistrements qui n'existent pas dans
tab1 soient insérés. Bien entendu (tab1.chp1,tab1.chp2) ne constitue
pas une clé. Dois-je ajouter à ma requête d'insertion, dans la
clause where un NOT IN SELECT tab1.chp1, tab1.chp2.... ou existe -il
une ruse pour ne pas ajouter un select dans la clause where.

merci de votre aide



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr



Avatar
caro
Merci ça marche!!!

Bonjour caro,

Tu peux te passer d'une clause Where avec un Not IN (select...) en
utilisant une requête avec jointure externe pour trouver les valeurs
présentes dans T2 et absentes de T1 (requête de non correspondance si tu
préfères).

Ca devrait donner quelque chôse comme :

INSERT INTO T1(chp1,chp2)
SELECT T2.chp1, T2.chp2
FROM T2 left JOIN T1 ON T2.chp1 = T1.chp1 and T2.chp2=T1.chp2
WHERE IsNull(T1.chp2) and IsNull(T1.chp1);

A tester, évidemmment, sur une copie de la table T1.

Bonjour à tous,

je fais un INSERT INTO tab1.chp1, tab1.chp2 SELECT tab2.chp1,tab2,chp2
FROM tab2 WHERE....
et je voudrai que seuls les enregistrements qui n'existent pas dans
tab1 soient insérés. Bien entendu (tab1.chp1,tab1.chp2) ne constitue
pas une clé. Dois-je ajouter à ma requête d'insertion, dans la
clause where un NOT IN SELECT tab1.chp1, tab1.chp2.... ou existe -il
une ruse pour ne pas ajouter un select dans la clause where.

merci de votre aide



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr