Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2010, 10h30   #1
Invité de passage
 
Inscription : août 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 25
Points : 3
Points : 3
Par défaut Ajouter une ligne si elle n'existe pas dans la table

Bonjour à tous,

Alors voila, je souhaiterai via une requete SQL affectuer un "INSERT INTO" dans une table access T_Préparateur à partir d'une autre table de ma base (T_Préparateur_Import) qui a éxactement les même Champs, mais pas les meme données.

Cependant, je souhaiterai ajouter la ligne UNIQUEMENT si la ligne n'existe pas déjà dans ma table. Le but est donc d'obtenir ma table T_Préparateur avec les nouvelles données en plus.

Je sais effectuer cela en utilisant des recordset mais je trouve le délais d'execution assez lent. C'est pour cela que je souhaiterai faire cela via ma requete SQL.

Je pense qu'il faut utiliser une requete SQL qui doit ressembler à quelques chose comme ça mais je n'arrive pas à la faire fonctionner :
Code sql :
INSERT INTO T_Préparateur VALUES SELECT * FROM T_Préparateur_Import WHERE T_Préparateur_Import.PNC AND  T_Préparateur_Import.Num_Commande NOT IN (SELECT * FROM T_Préparateur)
Connaissez vous la bonne syntaxe svp ?

Merci d'avance
daimadoshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 10h33   #2
Invité de passage
 
Inscription : août 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 25
Points : 3
Points : 3
Je viens de penser a qqch.

Ne puis je pas utiliser la requete de typoe "left Join" pour ajouetr mes enregistrement ?

Merci
daimadoshi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 11h04   #3
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Bonjour.
Il m'avait semblé avoir lu des tests comparatifs montrant que DAO était plus rapide mais je peux me tromper.
Avec DAO, j'aurais fait un parcours du jeu d'enregistrement et vérifié pour chaque enregistrement s'il n'est pas déjà présent dans la table T_Préparateur avant de l'ajouter.
On peut faire cette vérif assez simplement avec un DCount().

En SQL, je ne suis pas très bon mais je pense que ça doit fonctionner comme ceci :
Code SQL :
1
2
INSERT INTO T_Préparateur 
SELECT * FROM T_Préparateur_Import NOT IN (SELECT * FROM T_Préparateur)
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 11h10   #4
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Après réflexion, je pense qu'il te faudra préciser les champs pour le INSERT et donc dans tes SELECT
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h47   #5
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 401
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 401
Points : 4 420
Points : 4 420
bonjour à tous,

le NOT IN se traînant comme une limace sous Access, on préfèrera un bon LEFT JOIN, du style:

Code sql :
1
2
3
SELECT * FROM T_Préparateur_Import I LEFT JOIN T_Préparateur P
ON I.PNC=P.Num_Commande
WHERE P.Num_Commande IS NULL;

puis on bascule en requête Ajout avec l'assistant...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h52   #6
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Ok, c'est bon à savoir.
Je n'utilise que très peu du SQL pur sous Access. Je préfère DAO
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h59.


 
 
 
 
Partenaires

Hébergement Web