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. #21
    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'utilise les BDD sans le relationnelle

    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;
    Je ne comprends pas trop la démarche
    on crée et copie les élément de Ruche34 vers Ruche34save
    On va avoir le même pb avec l'index auto-incrémenté ..

  2. #22
    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
    Le transfert se fait de 34 => 19
    Dans 19, il y a déjà des enregistrement que je désire garder
    Donc il faut les rajouter les enreg. de la 34 à la suite de la 19
    Le pb c'est que l'on des valeurs d'index identique dans les deux tables (id) => 1,2,3....

  3. #23
    Invité
    Invité(e)
    Par défaut
    Re.

    Mon CONSEIL :
    • SAUVEGARDE d'abord ta base de données !
    • Fais tes TESTS (requêtes) sur des COPIES de tes tables.






    (pour info, l'autre jour, j'ai vidé une table au lieu d'une autre, par inadvertance.... sans sauvegarde...
    Heureusement, il y avait relativement peu de données, mais j'ai dû tout retaper...)

  4. #24
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par apicultrice Voir le message
    ...Le pb c'est que l'on des valeurs d'index identique dans les deux tables (id) => 1,2,3....
    C'est un problème uniquement si tu veux CONSERVER ces index.

    Or, si je comprends bien, c'est un TRANSFERT de données d'une table vers une autre (où ces données n'existent pas encore).

    Donc, à priori, c'est beaucoup plus simple :
    • on n'a pas besoin de garder le même index
    • c'est un INSERT qu'il faut faire (SANS transférer l'index ID)
    • il faut lister toutes les colonnes à transférer, SAUF l'ID.

    Oui ? / Non ?

  5. #25
    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 fait comme cela avec des copies de table:

    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
    // transfert tous les enregistrements de la ruchette vers la ruche
    $sql = "SELECT * FROM $Num_ruchette";   
    $reponse=mysql_query($sql) or die( 'MySQL SELECT ERROR: '. mysql_error());
    while ($donnees = mysql_fetch_assoc($reponse)) {
         $date_op = $donnees['Date_op'];
         $n_bal = $donnees['Num_balance'];
         $activ = $donnees['Etat'];
         $cadre = $donnees['Nb_cadres'];
         $couvain = $donnees['Nb_cadre_couvain'];
         $operation = $donnees['Operation'];
         $Poids_ruche = $donnees['Poids'];
         $trait = $donnees['Traitement'];
         $mal = $donnees['Maladie'];
         $obs = $donnees['Observations'];                     
         $sql = "INSERT INTO $Nom_ruche (id, Date_op, Num_balance, Etat, Nb_cadres, Nb_cadre_couvain, Operation, Poids, Traitement, Maladie, Observations) VALUES('','$date_op','$n_bal','$activ','$cadre','$couvain','$operation','$Poids_ruche','$trait','$mal','$obs')"; 
         mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $sql = "TRUNCATE TABLE $Num_ruchette"; // vide la table        
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    Cela fonctionne bien mais je trouve que c'est lourd !

  6. #26
    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
    Le jour où le besoin sera clair, on pourra avancer !

    On a d'abord eu ça dans le message #1
    Je voudrais rajouter le contenu d'une table "X" vers une table "Y" qui contient déjà des enregistrements
    => Ajout de données à une table déjà remplie.

    Ensuite on a eu ça dans le message #14 :
    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
    Vidage de la table source pour qu'elle serve à un autre essaim.
    Comme il n'était pas précisé que la table 19 n'avait pas été précédemment vidée, j'ai suggéré de la vider pour y mettre les données de la table 34 (ok, j'ai inversé les tables dans ma réponse mais bon...)

    J'suis limpide ?
    Ben non ! D'où le fait qu'on en soit déjà à la deuxième page !

    Passons au message #21 :
    oui j'utilise les BDD sans le relationnelle


    Donc, cela veut-il dire qu'il n'y a pas d'associations entre les tables et que, donc, l'identifiant de la table RucheX n'est pas référencé dans la clé étrangère d'une autre table ?
    Si c'est ça, alors, comme l'a dit jreaux62, il faut faire un insert avec les noms des colonnes sans la colonne Id

    Oubliez la méthode de bouclage sur le SELECT * en PHP ; ça ne résout pas le problème et c'est plus lent.

    Si vous ne référencez pas les identifiants dans des clés étrangères, alors il faut simplement procéder ainsi pour ajouter les données d'une table (RucheX) dans une autre (RucheY) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO RucheY (Date_op, Num_balance, Etat, Nb_cadres, Nb_cadres_couvain, Operation, Poids, Traitement, Maladie, Observations)
    SELECT Date_op, Num_balance, Etat, Nb_cadres, Nb_cadres_couvain, Operation, Poids, Traitement, Maladie, Observations
    FROM 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 !

  7. #27
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO TableCible (Date_op, Num_balance, Etat, Nb_cadres, Nb_cadre_couvain, Operation, Poids, Traitement, Maladie, Observations)
        SELECT Date_op, Num_balance, Etat, Nb_cadres, Nb_cadre_couvain, Operation, Poids, Traitement, Maladie, Observations
        FROM TableSource
    Mais je confirme que vous avez un gros problème de modélisation.
    C'est cela qui vous oblige a une telle manipulation aujourd'hui, et ça sera sans doute pire dans l'avenir.
    prévoyez de corriger au plus tôt !

  8. #28
    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
    Ok cela fonctionne

    J'avais essayé la même chose mais en laissant le champ "id"

    Au début du développement je voulais faire une p'truc et en ne pense pas à une structure d'ensemble....

    Merci à tout le monde surtout pour votre patience

  9. #29
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    ...
    • c'est un INSERT qu'il faut faire (SANS transférer l'index ID)
    • il faut lister toutes les colonnes à transférer, SAUF l'ID.
    Citation Envoyé par CinePhil Voir le message
    ...Si c'est ça, alors, comme l'a dit jreaux62, il faut faire un insert avec les noms des colonnes sans la colonne Id...
    Tu LIS vraiment ce qu'on t'écrit ??
    On peut en douter...

  10. #30
    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 apicultrice Voir le message
    Ok cela fonctionne

    J'avais essayé la même chose mais en laissant le champ "id"

    Au début du développement je voulais faire une p'truc et en ne pense pas à une structure d'ensemble....

    Merci à tout le monde surtout pour votre patience
    C'était avant d'écrire le post

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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