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

cs_julien__ 53 Messages postés vendredi 2 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 29 sept. 2006 à 03:38 - Dernière réponse : cs_julien__ 53 Messages postés vendredi 2 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention
- 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 

2 réponses

Répondre au sujet
cs_Malkuth 278 Messages postés samedi 22 février 2003Date d'inscription 24 avril 2013 Dernière intervention - 29 sept. 2006 à 16:11
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Malkuth
cs_julien__ 53 Messages postés vendredi 2 janvier 2004Date d'inscription 1 décembre 2008 Dernière intervention - 1 oct. 2006 à 00:30
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
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.