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 MySQL Discussion :

Insérer un enregistrement dont les données sont dans une autre table


Sujet :

Requêtes MySQL

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut Insérer un enregistrement dont les données sont dans une autre table
    Bonjour,

    Alors ma question est simple : Je voudrais insérer un enregistrement dans une table A à partir d'une table B mais tout en conservant l'auto increment de la table A !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO Table_A 
    SELECT project_id, project_borrower_id, project_des, project_statut, 
    project_progress, project_repayment_progress, project_montant, 
    project_montant_total, project_taux, project_duration, 
    project_repayment_date 
    FROM Table_B) 
    WHERE project_id='5'
    Avec ce code, j'ai un problème avec l'index car il peux déjà exister dans la table_A. Je voudrais donc insérer cet enregistrement en utilisant l'auto_increment de la table_A pour être sur d'être tranquille

    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Bonjour,

    Au cas où, tu n'est pas déjà résolu ton insert, essaie sans sélectionner project_id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO Table_A (project_borrower_id, project_des, project_statut, 
    project_progress, project_repayment_progress, project_montant,project_montant_total, project_taux, project_duration, 
    project_repayment_date)
    (SELECT project_borrower_id, project_des, project_statut, project_progress, 
    project_repayment_progress, project_montant,project_montant_total, 
    project_taux, project_duration, project_repayment_date 
    FROM Table_B 
    WHERE project_id=5)
    PS : je ne sais pas si les parenthèses autour du select sont nécessaires avec mysql.

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Avec ou sans parenthèses la syntaxe est incorrecte :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Table_B) SELECT project_borrower_id, project_des, project_statu' at line 1
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    INSERT INTO table1() 
         VALUES(SELECT * FROM TABLE 2)
    donc

    INSERT INTO Table_A (project_borrower_id, project_des, project_statut, project_progress, project_repayment_progress, project_montant,project_montant_total, project_taux, project_duration, project_repayment_date)
    VALUES
    (SELECT project_borrower_id, project_des, project_statut, project_progress, project_repayment_progress, project_montant,project_montant_total, project_taux, project_duration, project_repayment_date
    FROM Table_B
    WHERE project_id=5)

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    La requête de skuatamad me semble correct (même si les parentheses ne sont pas utiles)

    peux tu nous donner la requete exacte qui te donne ce message d'erreur?

    par contre la requete de Mygale1978 ne fonctionnera pas, on n'utilise pas de 'values' quand on alimente une table par un select

  6. #6
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Oui je sais qu'avec le VALUES ca ne marche pas !

    Voilà la requête qui plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO Table_A (project_borrower_id, project_des, 
    project_statut, project_progress, project_repayment_progress, 
    project_montant, project_montant_total, project_taux, project_duration, 
    project_repayment_date) 
    (SELECT project_borrower_id, project_des, project_statut, project_progress, 
    project_repayment_progress, project_montant, project_montant_total, 
    project_taux, project_duration, project_repayment_date 
    FROM Table_B WHERE project_id='5')
    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Il ne faut pas mettre de parenthèses autour du SELECT. Et, au passage, les apostrophes autour du 5 sont une absurdité !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    INSERT INTO Table_A (
      project_borrower_id, 
      project_des, 
      project_statut, 
      project_progress, 
      project_repayment_progress, 
      project_montant, 
      project_montant_total, 
      project_taux, 
      project_duration, 
      project_repayment_date) 
    SELECT project_borrower_id, 
      project_des, 
      project_statut, 
      project_progress, 
      project_repayment_progress, 
      project_montant, 
      project_montant_total, 
      project_taux, 
      project_duration, 
      project_repayment_date 
    FROM Table_B 
    WHERE project_id = 5
    Et par pitié, n'écrivez pas des requêtes de 500 caractères sur une seule ligne !
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  8. #8
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Merci ca marche, c'était les parenthèses le problème !


    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. modifier des tables dont les noms sont dans une autre
    Par lapin_did dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2010, 09h45
  2. Réponses: 11
    Dernier message: 18/01/2010, 11h29
  3. Sous-chaîne dont les bornes sont dans une autre colonne
    Par Rak111 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/11/2009, 20h58
  4. Réponses: 2
    Dernier message: 04/03/2008, 11h32
  5. Réponses: 0
    Dernier message: 06/02/2008, 17h05

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