MySQL pour ajout d'une table on duplicate key
8 messages
• Page 1 sur 1
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
MySQL pour ajout d'une table on duplicate key
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?
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

- Messages: 3974
- Inscription: 16 Nov 2004
>> 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
Ouiiii pour une autre méthode !
> utilise UNIQUE KEY et ton probleme sera vite résolu
- 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)
);
-

KOogar - WRInaute accro

- Messages: 3974
- Inscription: 16 Nov 2004
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.
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 occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
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...
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

- Messages: 19595
- Inscription: 8 Aoû 2004
utilise la fonction REPLACE http://dev.mysql.com/doc/refman/5.0/fr/replace.html
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- MYSQL ajout automatique de champs dans ma table
- Mysql ON DUPLICATE KEY UPDATE
- [Mysql] Parsing d'une clé + On Duplicate Key
- Erreur MySql: Duplicate entry '11' for key 1
- PHP MySql copy table à table [RESOLU]
- Mysql.._[JOINTURE - PRIMARY KEY - UNIQUE - INDEX ]
- Problème: Duplicate entry '1969' for key 1 unrgent !
- [Prestashop] Ajout d'un champ table product, comment le récupérer sur product.tpl ?
- UPDATE TABLE MYSQL !
- table mysql : category
- Analyse de similarité textuelle
Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
