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

Access Discussion :

SQL : syntaxe insert into select


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Par défaut SQL : syntaxe insert into select
    Bonjour à tous,

    Je souhaite ajouter une ligne à ma table via une requête INSERT ... SELECT.
    Ma table comporte 4 champs, et je souhaite entrer des valeurs arbitraires (comme je l'aurais fait avec un INSERT ... VALUES), sauf pour le troisième champ, qui est rempli par le SELECT.
    Je pensais utiliser cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "INSERT INTO ma_table1 (champ1, champ2, champ3, champ4) SELECT 'val1', 'val2', id FROM ma_table2, 'val4'"
    Mais cela ne fonctionne pas.
    Quelqu'un pourrait-il m'aider à comprendre mon erreur de syntaxe?

    Merci à tous

  2. #2
    Membre éclairé Avatar de anto
    Inscrit en
    Juin 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 86
    Par défaut
    il faut quand meme rajouter le mot values non?

  3. #3
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Ta syntaxe me semble bien obscure.

    Qu'est ce que id ? Que vient faire val 4 aprés le From ?

  4. #4
    Membre éclairé Avatar de anto
    Inscrit en
    Juin 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 86
    Par défaut
    j'avais meme pas vu

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Par défaut
    Citation Envoyé par Tofalu
    Ta syntaxe me semble bien obscure.

    Qu'est ce que id ? Que vient faire val 4 aprés le From ?

    id est le nom d'un champ de ma_table2 que je souhaite extraire pour l'introduire dans ma_table1

  6. #6
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    dans ce cas

    DoCmd.RunSQL "INSERT INTO ma_table1 (champ1, champ2, champ3, champ4) SELECT 'val1', 'val2', id, 'val4' FROM ma_table2"

    mais il faut que la sous requête Select ne retourne qu'une seule ligne.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Par défaut
    Citation Envoyé par Tofalu
    dans ce cas

    DoCmd.RunSQL "INSERT INTO ma_table1 (champ1, champ2, champ3, champ4) SELECT 'val1', 'val2', id, 'val4' FROM ma_table2"

    mais il faut que la sous requête Select ne retourne qu'une seule ligne.
    Il me met toujours cette erreur 2501.
    Si je force la requête, il crée bien la ligne que je désire dans ma_table1, sauf pour le quatrième champ où il ne met pas 'val4', il ne met rien à la place.

    ma_table2 ne possède en effet qu'un seul enregistrement à chaque fois, donc il ne devrait pas y avoir de problème pour le SELECT, il va bien ne prendre qu'une et une seule valeur

  8. #8
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Par défaut
    Citation Envoyé par anto
    il faut quand meme rajouter le mot values non?
    En fait, j'ai utilisé la même syntaxe (sans le mot values) su une autre table et ça fonctionne, sauf que le champ concerné par la valeur "extraite" (la valeur non définie par moi-même) était en dernière position.

    C'est de là que vient mon erreur je pense.
    Access doit se dire que mon 'val4' est dans la requête du SELECT, non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Insert into select(s)
    Par tidou95220 dans le forum SAS Base
    Réponses: 3
    Dernier message: 25/03/2013, 12h14
  2. Syntaxe INSERT INTO et SELECT
    Par seyflo dans le forum VBA Access
    Réponses: 11
    Dernier message: 07/06/2010, 11h05
  3. [SQL] Problème de guillemets dans un INSERT INTO SELECT
    Par Lenezir dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/02/2008, 14h21
  4. Incrémenter champ : insert into . select max(.) + 1 from .
    Par ludo.guy dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/11/2004, 14h39
  5. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32

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