MySQL pour ajout d'une table on duplicate key

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


julien__
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Jeu Déc 28, 2006 2:17

MySQL pour ajout d'une table on duplicate key

Message le Jeu Mar 22, 2007 1:48

Bonjour, je voudrais insérer dans une table b le contenu entier d'une table a, mais si un enregistrement existe déjà, seulement mettre à jour l'enregistrement.

champ1unique : est une valuer qui doit être unique
champ2valeur : est une valeur à ajouter (ou updater si champ1unique existe déjà)

Insert Into table_b (champ1unique, champ2valeur) Select (champ1unique,champ2valuer) From table_a

visiblement dans le mode d'emploi MySQL le ON DUPLICATE KEY UPDATE n'existe pas lorsque on fait un Insert avec un Select.

Alors peut-être une requête sur la table_a
Select (champ1unique,champ2valeur) From table_a
while($val = mysql_fetch_array($req))
{
$x=$val['champ1unique'];
$y=$val['champ2valeur'];
INSERT INTO table_b (champ1unique, champ2valeur) VALUES ($x,$y) ON DUPLICATE KEY UPDATE champ2valeur=$y
}

est-ce que c'est comme ça qu'on fait ou est-ce qu'il y a une autre méthode?


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Jeu Mar 22, 2007 16:00

>> est-ce que c'est comme ça qu'on fait ou est-ce qu'il y a une autre méthode?

Ouiiii pour une autre méthode !

> utilise UNIQUE KEY et ton probleme sera vite résolu :wink:

Code: Tout sélectionner
CREATE TABLE login (
  login_id int(20) NOT NULL auto_increment,
  champ1unique varchar(30) NOT NULL default '',
  PRIMARY KEY  (login_id),
  UNIQUE KEY champ1unique (champ1unique)
);


julien__
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Jeu Déc 28, 2006 2:17

???

Message le Jeu Mar 22, 2007 23:38

Cela veut dire que si je créé ma table comme ça je peux utiliser le code que j'ai mis ou? ou alors c'est juste une piste et le code c'est pas du tout ça? :?:


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Ven Mar 23, 2007 2:59

reprenons,

A quoi sert UNIQUE KEY ? A ne pas pouvoir inserer de doublons dans la table. Donc pour toi tu vas dans ta "table_b", et tu passe ton champ champ1unique en UNIQUE KEY champ1unique (champ1unique) (voir exemple + haut)

tu peux maintenant passer les datas de la "table_a" a la table "table_b" sans te preocupe d'enlever les doublons (les duplicate). Ca se fera tout seul puisqu'ils ne pourrons pas s'inserer.


julien__
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Jeu Déc 28, 2006 2:17

Message le Sam Mar 24, 2007 0:00

ok c'est cool...ça répond partiellement à mon problème!

mais le but c'était :

si l'enregistrement champunique n'existe pas on l'ajoute
mais si l'enregistrement champunique existe on ne l'ajoute pas MAIS on update champvaleur...


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12388
Inscription: Dim Aoû 08, 2004 20:24

Message le Sam Mar 24, 2007 0:11



julien__
WRInaute impliqué
WRInaute impliqué
 
Messages: 316
Inscription: Jeu Déc 28, 2006 2:17

Message le Mar Mar 27, 2007 20:51

Oui avec Unique pour le champ et la fonction Replace je m'en sors très bien... merci à tous


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3338
Inscription: Mar Nov 16, 2004 18:27

Message le Mar Mar 27, 2007 21:39

avec plaisir :D


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités