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

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    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 régulier Avatar de anto
    Inscrit en
    Juin 2003
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 86
    Points : 84
    Points
    84
    Par défaut
    il faut quand meme rajouter le mot values non?

  3. #3
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    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
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    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?

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

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    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

  7. #7
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    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.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    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

  9. #9
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    C'est quoi le message de l'erreur 2501 ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Tofalu
    C'est quoi le message de l'erreur 2501 ?
    Microsoft Office Access ne peut pas ajouter tous les enregistrements de la requête Ajout.
    Access a attribué la valeur Null à 0 champ à la suite d'une erreur de conversion de type, 1 enregistrement n'a pas été ajouté à la table à la suite de violation de clé...

  11. #11
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    De quel type est le champ4 ?

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    il s'agit d'un champ texte sur 2 caractères avec un masque de saisie 00;;
    La valeur que prend 'val4' ici est tout simplement 00.

  13. #13
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tu arrives à ajouter cette valeur manuellement ?

    Essaye ceci :

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

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    il me dit qu'il y a une erreur de syntaxe dans l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT id FROM ma_table2'

  15. #15
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Je viens d'essayer :

    DoCmd.RunSQL "INSERT INTO ma_table1 (champ1, champ2, champ3, champ4) SELECT 'val1', 'val2', id, 'val4' FROM ma_table2"
    Cela fonctionne trés bien. Tu es sûr que ton masque ne pose pas problème ni même une relation ?

  16. #16
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci Tofalu, tu avais raison (comme souvent j'ai l'impression).
    J'avais une relation qui m'interdisait cette création, et ta requête avec le SELECT passe nickel.

    Merci encore

+ 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