MySQL copier une table vers une autre table

Résolu
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 29 sept. 2006 à 03:38
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre 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?
A voir également:

2 réponses

cs_Malkuth Messages postés 268 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 24 avril 2013 4
29 sept. 2006 à 16:11
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
3
cs_julien__ Messages postés 53 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
1 oct. 2006 à 00:30
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
3
Rejoignez-nous