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 :

update d'une table vers une autre


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut update d'une table vers une autre
    Bonjour,

    Je voudrais rajouter le contenu d'une table "X" vers une table "Y" qui contient déjà des enregistrements
    Les champs des tables X & Y sont identiques
    J'ai essayé cela:

    update into Y select * from X

    Qui a une idée ? merci

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je voudrais rajouter le contenu d'une table "X" vers une table "Y"
    ...
    J'ai essayé cela:

    update
    Si vous voulez AJOUTER des lignes (on ne parle pas d'enregistrements dans les bases de données relationnelles mais de lignes), vous voulez donc INSÉRER :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO y
    SELECT * 
    FROM x
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    j'ai déjà essayé cette requête qui me retourne un message d'erreur:
    "#1062 - Duplicate entry '1' for key 1"
    Dans les deux tables il y a un champ "ID" avec une valeur "1"

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

    1-
    Citation Envoyé par apicultrice Voir le message
    ...J'ai essayé cela:...
    OK. Mais c'est n'importe quoi : c'est un mélange des syntaxes UPDATE / INSERT...
    As-tu lu un peu la DOC SQL ?
    Ne serait-ce que les bonnes syntaxes de UPDATE / INSERT / DELETE ?


    2- Il faut être plus précis(e) dans les termes que tu emploies.

    • UPDATE : suppose que les lignes existent déjà dans la 2ème table ?
    • INSERT : les lignes n'existent pas, donc on les crée

    Si c'est un mélange des deux (des lignes qui existent déjà, et d'autres à ajouter), c'est un peu plus compliqué, surtout s'il existe un index auto-incrémenté :
    • faut-il conserver les index de la 1ère table (ou pas ?)

    Donc, en exprimant plus clairement ta demande, tu pourrais faire une recherche avec les bons mots-clé.
    Comme :
    • "copier les lignes d'une table dans une autre"
    • "Comment insérer des données d'une table dans une autre table ?"
    Dernière modification par Invité ; 27/08/2018 à 10h21.

  5. #5
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    Oui j'ai recherché avec ces mots clés mais il s'agit toujours de transféré les données de la table X vers une table Y vide

    je pense que le pb vient de l'index
    Les deux tables ont des enregistrements avec des index auto incrémentés identiques (ID) d'où le message d'erreur

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans le cas d'un mélange des deux (ce qui généralement le cas), il faut regarder du coté de ON DUPLICATE KEY.
    Ce qui donnerait quelque chose du genre : (sans garantie)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table2 T2 (a, b, c)
    VALUES ( SELECT T1.a, T1.b, T1.c FROM table1 T1)
    ON DUPLICATE KEY UPDATE table2 SET a = T1.a, b = T1.b, c = T1.c

    Il me semble qu'une autre solution est de passer par une 3ème table, temporaire.
    (il faut que je retrouve où j'ai déjà fait ça...)

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Avec une table temporaire, voir ce que j'ai suggéré récemment pour l'import d'un CSV où toutes les colonnes ne sont pas renseignées et semble avoir donné satisfaction à la demandeuse.
    La solution ON DUPLICATE KEY UPDATE n'était pas applicable.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre confirmé
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 201
    Par défaut
    il y a la solution de faire mouliner la table X et transférer dans la boucle vers la table Y avec un Insert
    et à la fin faire TRUNCATE TABLE 'X' pour vider la table

    il y a surement une solution plus simple...

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

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