IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Ajouter une ligne si elle n'existe pas dans la table


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 15
    Points
    15
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Je viens de penser a qqch.

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

    Merci

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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


  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    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


  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 630
    Points : 56 939
    Points
    56 939
    Billets dans le blog
    40
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  6. #6
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    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


Discussions similaires

  1. Réponses: 7
    Dernier message: 11/07/2017, 16h31
  2. [XL-2010] Code VBA pour ajout d'une date lorsqu'elle n'existe pas
    Par Jey14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/10/2013, 13h39
  3. Ajouter une div si elle n'existe pas
    Par beegees dans le forum jQuery
    Réponses: 6
    Dernier message: 15/06/2011, 09h23
  4. [XL-2010] Ajouter une feuille si elle n'existe pas
    Par PhaleneCAD dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/02/2011, 20h53
  5. ajouter des lignes qd elles n'existent pas
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 30/01/2008, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo