cs_julien__
Messages postés53Date d'inscriptionvendredi 2 janvier 2004StatutMembreDernière intervention 1 décembre 2008
-
29 sept. 2006 à 03:38
cs_julien__
Messages postés53Date d'inscriptionvendredi 2 janvier 2004StatutMembreDerniè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:
Inserer les données d'une table dans une autre sql
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 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.
cs_julien__
Messages postés53Date d'inscriptionvendredi 2 janvier 2004StatutMembreDerniè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.