MySQL copier une table vers une autre table [Résolu]

Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
1 décembre 2008
- - Dernière réponse : cs_julien__
Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
1 décembre 2008
- 1 oct. 2006 à 00:30
Je ne trouve aucun code source ni aide à ce sujet...

Je cherche à copier une sélection d'une table MySQL dans une autre table qui n'est pas vide avec du code PHP.


$query = "INSERT INTO table_dest SELECT * FROM table_src WHERE genre LIKE 'exemple'";


Avec cet ligne de code j'arrive à copier la sélection des enregistrement LIKE 'exemple' de la table_src vers la table_dest mais seulement si la table_dest est vide.


Lorsque la table_dest a déjà des enregistrements, cela créé une l'erreur suivante...


Duplicate entry '5' for key 1


Il n'y a aucune relation entre ces deux tables
Elles ont exactement la même structure (12 champs dont le premier est un index avec auto_incrément)


Bien sur dans les 2 tables il y a des enregistrement qui ont la même valeur d'index


Quelqu'un aurait une solution?
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
278
Date d'inscription
samedi 22 février 2003
Dernière intervention
24 avril 2013
3
Merci
et ben tu as dis la réponse toi même tu a des index identique dans les deux table donc quand tu rajoute un enrisgtrement avec un index déjà existant ca marche pô, c'est exactement ce qu'on peut attendre d'un index.
 
Trois solution selon ce que tu veux : 
   1- Virer transformer ton index de destination en simple champ numérique (BOF)
   2- ne pas faire un select * mais un select champ1,Champs2... avec tous les champs sauf l'index.(la il faut pas que tu veuille absoluement le même index que la table source
   9-Si tu tient a garder l'ID (Mais pas comme index tu fais la soluce 1 et tu rajoute un champ sur lequel tu met Index et autoingrément.

Voilou

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Malkuth
Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
1 décembre 2008
3
Merci
Oui je me doutais bien que c'était ça... ta solution 2 me praissait la meilleure en ce qui me concernait, voilà comment je l'ai mis en application...

$query = "INSERT INTO table_dest('champs2','champs3','champs4','etc..') SELECT champs2,champs3,champs4,etc.. FROM table_src WHERE genre LIKE 'exemple'";

comme ça le champs1 qui est l'index avec l'auto-incrément et la clé primaire n'entre pas dans l'opération.
avec cette requête, les enregistrement sélectionné dans la table_src sont mis à la suite des enregistrements de la table_dest avec une nouvelle valeur auto_incréement.

merci pour ton aide

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_julien__

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.