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

  1. #1
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    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
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    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. Autoentrepreneur.
    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 du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    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 du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    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
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    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. Autoentrepreneur.
    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 du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    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...

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est justement ce que j'ai déconseillé dans la discussion dont j'ai mis le lien dans mon précédent message !
    Si la table est grosse, ce sera très lent et ça bloquera la table pour les autres utilisateurs.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  10. #10
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    C'est justement ce que j'ai déconseillé dans la discussion dont j'ai mis le lien dans mon précédent message !
    Si la table est grosse, ce sera très lent et ça bloquera la table pour les autres utilisateurs.
    Oui c'est le pb de cette solution...

    Il me faudrait une solution plus optimisée ..

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Et bien regardez au dessus la solution INSERT ... ON DUPLICATE KEY UPDATE et, si elle est inapplicable comme dans le cas de l'autre discussion que j'ai citée, utilisez ma solution.

    Ou alors vous exprimez mal les paramètres de votre besoin.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    ...Ou alors vous exprimez mal les paramètres de votre besoin...
    C'est souvent le problème avec apicultrice : elle est avare en code et en explications...
    Si on ne lui demande pas, elle ne montre rien.

    C'est le 12ème message, et on n'a toujours pas vu :
    • d'explications plus précises, suite à nos réponses
    • la structure des tables (éventuellement)
    • les requêtes qu'elle a testées (avec de "vraies" données)


  13. #13
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    Par défaut
    Il faut que tu regardes mon site:

    http://ruches.montminoises.free.fr/index.php

  14. #14
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    Par défaut
    c'est justement pour simplifier les explications !!!
    Car il y a beaucoup de champ et de tables....
    Pas facile après pour donner des explications précises dans un contexte fourni
    En fait pour donner des explications plus contextuelles, comme mon speudo le précise, je suis apicultrice

    Problématique:

    Lorsque j'ai un nouvel essaim, je le place dans une ruchette 6 cadres dont toutes les informations sont placées dans une table ex: Ruche34 qui comprend toute les opérations effectuées sur cette ruchette
    Lorsque l'essaim grossit il faut le placer dans une ruche (12 cadres) et l'idée consiste à transférer toutes ses infos vers la table de ruche ex: Ruche19 et aussi vider les infos de la table de la ruchette (Ruche 34) afin qu'elle serve à un nouvel essaim

    J'suis limpide ?
    A+ et merci pour toute tes réponses et ta patience

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est donc un problème de conception de la base de données mais qui sera lourd à corriger !

    Si vous voulez faire les choses bien, il va falloir passer par le forum Schéma.

    Quelle est la structure d'une table RucheX ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  16. #16
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    Par défaut
    Nom : Capture.JPG
Affichages : 193
Taille : 61,3 Ko

  17. #17
    Membre du Club
    Femme Profil pro
    Automatisme
    Inscrit en
    Juillet 2015
    Messages
    198
    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 : 198
    Points : 52
    Points
    52
    Par défaut
    C'est vrai qu'au début c'était plutôt un jeu pour faire un petit "truc" et vite on se prends au "jeu" et l'application grossit ....
    J'aurais dû utiliser Merise ou équivalent comme appris à l'école ...il y a ....ans

  18. #18
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'aurais dû utiliser Merise ou équivalent
    Voilà ! C'est peut-être le moment de s'y mettre parce que j'ai l'impression que vous utilisez le SGBD comme un tableur !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  19. #19
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ceci dit, vu le besoin exprimé :
    Lorsque l'essaim grossit il faut le placer dans une ruche (12 cadres) et l'idée consiste à transférer toutes ses infos vers la table de ruche ex: Ruche19 et aussi vider les infos de la table de la ruchette (Ruche 34) afin qu'elle serve à un nouvel essaim
    Une adaptation de ma méthode expliquée dans l'autre discussion est valable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- 1) Copie de la table destinataire (Ruche34 dans l'exemple donné).
    CREATE TABLE Ruche34Save
    SELECT * 
    FROM Ruche34;
     
    -- 2) Vidage de la table destinataire
    TRUNCATE TABLE Ruche34;
     
    -- 3) Copie de la table source vers la table destinataire
    INSERT INTO Ruche34
    SELECT *
    FROM Ruche19;
    On peut ensuite, si besoin, envoyer les données de la Ruche34Save dans une autre table avec le même principe.
    Si on n'a plus besoin des données d'une table RucheX :
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  20. #20
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Bonsoir, @apiculture tu veux faire du cafouillage dans ta BD et ça peut te coûter chère plutard. Tu cherches à bricoler ta BD en voulant la modifier avec des requêtes qui peuvent tout foirer.
    Je te conseil de reprendre ta BD à zéro. Oui c'est fastidieux mais ça vaut le coup.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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