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 :

insert into via un select soucis auto increment


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut insert into via un select soucis auto increment
    Bonjour,

    J'ai une table old_facture, que je veux dispatcher dans 3 autres tables commande,new_facture et adresse .
    (ça va etre chaud pour car il y aura des FK et là faudra trouver le numero !!! mais la question n'est pas la..)

    je fais donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into adresse(numAdresse,nom,prenom,adresse,cp,ville) select nom,prenom,adresse,cp,ville from old_facture
    et j'ai donc l'erreur :

    Error Code : 1136
    Column count doesn't match value count at row 1
    ça doit etre du au fait que je renseigne pas le numAdresse dans mon select (logique je ne le connais pas !)
    du coup comment faire pour remplir une table en auto-increment d'après une sélection ?
    j'espère etre assez claire dans ce que je veux faire...
    merci beaucoup !

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Quand je devais insérer une série de valeurs dont une autoincrémentation, je faisais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT '', mot1, mot2 ...
    Donc peut-être que dans ton code tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT ... SELECT '', nom,prenom,adresse,cp,ville FROM old_facture
    Je n'ai jamais essayé et donc je ne sais pas si cela fonctionnera mais ça me parait logique.


    Jasmine,
    -- Jasmine --

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Tu peux mettre un NULL au début de la sélection. L'auto-incrément se fera correctement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO adresse(numAdresse,nom,prenom,adresse,cp,ville)
    SELECT NULL, nom,prenom,adresse,cp,ville 
    FROM old_facture
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Bonjour,

    Quand je devais insérer une série de valeurs dont une autoincrémentation, je faisais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT '', mot1, mot2 ...
    Donc peut-être que dans ton code tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT ... SELECT '', nom,prenom,adresse,cp,ville FROM old_facture
    Je n'ai jamais essayé et donc je ne sais pas si cela fonctionnera mais ça me parait logique.


    Jasmine,
    J'ai essayé mais non ça ne marche pas...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par ced Voir le message
    Tu peux mettre un NULL au début de la sélection. L'auto-incrément se fera correctement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO adresse(numAdresse,nom,prenom,adresse,cp,ville)
    SELECT NULL, nom,prenom,adresse,cp,ville 
    FROM old_facture
    ced
    Génial merci !!

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Citation Envoyé par maysa Voir le message
    J'ai essayé mais non ça ne marche pas...
    Normal, si le champ est numérique, il ne va pas aimer une chaîne de caractères vides . D'où la solution avec le NULL, qui vaut pour tous les types de champs...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    Bonjour,

    Je fais remonter le topic (qui est très ancien, certe, mais bien référencé sur google, donc pertinent) afin de demander s'il n'y a pas une solution alternative.
    Je suis sur une table avec plusieurs dizaines de champs nommé avec des noms de champs tout aussi long, et il est extrèment pénible de devoir retranscrire l'ensemble de tous les champs.

    J'ai essayé de travailler avec ON DUPLICATE KEY UPDATE id=null, sauf que ca prend ma première entré de la table cible, et ca met son ID à 0... sans insérer de nouvel enregistrement.

    à ce stade. LAST_INSERT_ID() est aussi à zéro, vu que l'erreur de duplicat se produit avant l'insertion réelle.

    Est-ce que quelqu'un aurait une piste ?

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

Discussions similaires

  1. [VBA]INSERT INTO et récupération d'id auto
    Par norkius dans le forum Access
    Réponses: 8
    Dernier message: 24/02/2013, 19h17
  2. insert into avec un select
    Par vaness303 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/05/2009, 14h54
  3. INSERT INTO avec un SELECT et SUBQUERY
    Par ruscov dans le forum SQL
    Réponses: 5
    Dernier message: 22/04/2008, 11h22
  4. Insert Into avec un Select
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/10/2007, 17h07
  5. [Débutant] INSERT INTO avec VALUES + SELECT
    Par Feezdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2006, 10h10

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