Insertion de données MYSQL par comparaison entre deux tables
Fermé
arguul
Messages postés
6
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
11 février 2013
-
11 févr. 2013 à 14:13
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 12 févr. 2013 à 22:23
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 12 févr. 2013 à 22:23
A voir également:
- Insertion de données MYSQL par comparaison entre deux tables
- Deux comptes whatsapp - Guide
- Insertion table des matières word - Guide
- Insertion liste déroulante excel - Guide
- Mysql download - Télécharger - Bases de données
- Deux ecran pc - Guide
10 réponses
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
Modifié par ThEBiShOp le 11/02/2013 à 15:21
Modifié par ThEBiShOp le 11/02/2013 à 15:21
à vue de nez, quelque chose dans ce goût là devrait le faire :
je pense même que c'est faisable en une seule requête...
//connexion à la bdd $req1 = "SELECT id, price FROM table1"; $res1 = mysql_query($req1); while (list($id, $price) = mysql_fetch_row($res1)) { $req2 = "UPDATE table2 SET price2='$price' WHERE product_id='$id'"; $res2 = mysql_query($req2); }
je pense même que c'est faisable en une seule requête...
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 15:29
11 févr. 2013 à 15:29
en une seule requête :
UPDATE table2 SET price2=(SELECT price1 FROM table1 WHERE table1.product_id = table2.product_id)
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 15:43
11 févr. 2013 à 15:43
tu peux faire ça directement dans phpmyadmin, pas besoin d'aller te fatiguer avec php
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 14:28
11 févr. 2013 à 14:28
Pourquoi tu n'ajoutes pas le champs price2 dans ta 1ère table tout simplement ?
mandolorien
Messages postés
109
Date d'inscription
dimanche 9 septembre 2012
Statut
Membre
Dernière intervention
9 mars 2018
3
11 févr. 2013 à 14:51
11 févr. 2013 à 14:51
C est effectivement compliquer a faire mais faisable ,je t eexplique il y a forcement 1 des tables dans laqulles tu es constament conncter , et bien quand tu fait l insertion des données dans la table 1 , tu verifie en php si elle a etait executé , si c est le cas tu creer une nouvelle connection a distance avec les les differentes variables puis tu referme la connexion des que la deuxieme insertions c est effectuer :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
arguul
Messages postés
6
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
11 février 2013
11 févr. 2013 à 15:12
11 févr. 2013 à 15:12
Merci pour la rapidité de vos réponses,
@ThEBiShOp: en fait j'ai besoin que les deux tables restent séparées, j'ai simplifié pour expliquer mon problème, mais chacune des deux tables possède une dizaine de champs différents, et on en commun le champs 'product_id'.
@mandolorien: c'est effectivement ce que j'ai mis en place pour les saisies futures, mais j'ai déjà 2500 insertions dans ces tables, et je cherche un moyen de récupérer la valeur 'price1' pour l'intégrer dans 'price2' en fonction du 'product_id' (qui est déjà renseigné dans ma deuxième table).
Cordialement.
@ThEBiShOp: en fait j'ai besoin que les deux tables restent séparées, j'ai simplifié pour expliquer mon problème, mais chacune des deux tables possède une dizaine de champs différents, et on en commun le champs 'product_id'.
@mandolorien: c'est effectivement ce que j'ai mis en place pour les saisies futures, mais j'ai déjà 2500 insertions dans ces tables, et je cherche un moyen de récupérer la valeur 'price1' pour l'intégrer dans 'price2' en fonction du 'product_id' (qui est déjà renseigné dans ma deuxième table).
Cordialement.
pourquoi sur phpmyadmin, ne pas duppliquer ta table
puis renommer price1 en price2 ?
en 30 secondes c'est fait.
puis renommer price1 en price2 ?
en 30 secondes c'est fait.
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 16:01
11 févr. 2013 à 16:01
visiblement il a d'autres champs, j'imagine que ces champs sont différents
UPDATE table2
INNER JOIN table1 on table2.product_id = table1.product_id
SET table2.price2 = table1.price1
Ajouter un
WHERE table2.price2 IS NULL
peut être utile
INNER JOIN table1 on table2.product_id = table1.product_id
SET table2.price2 = table1.price1
Ajouter un
WHERE table2.price2 IS NULL
peut être utile
maka54
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
12 févr. 2013 à 11:15
12 févr. 2013 à 11:15
INSERT INTO table2 ( product_id , price2 )
SELECT product_id, price1 FROM table1
ON DUPLICATE KEY UPDATE price2 = price1
product_id doit bien evidémment être un clé unique
SELECT product_id, price1 FROM table1
ON DUPLICATE KEY UPDATE price2 = price1
product_id doit bien evidémment être un clé unique
JooS
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
12 févr. 2013 à 22:23
12 févr. 2013 à 22:23
Salut,
Je dirais que ceci devrait fonctionner ...
Je dirais que ceci devrait fonctionner ...
UPDATE table2, table1 SET table2.price2 = table1.price1 WHERE table2.product_id = table1.product_id
mandolorien
Messages postés
109
Date d'inscription
dimanche 9 septembre 2012
Statut
Membre
Dernière intervention
9 mars 2018
3
11 févr. 2013 à 15:39
11 févr. 2013 à 15:39
// voila comment je vois la chose /***************************************************** * CONNEXION BDD / PDO * ****************************************************/ try { // On crée la connexion avec la base de données $db = new PDO('mysql:host=localhost;dbname=table1','root',''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->exec('SET NAMES UTF8'); } catch(PDOException $e) { // Oups !!! On a rencontré un problème die("Error : " . $e->getMessage()); } //On recupere les données de la table 1 $Connect = $db->prepare("SELECT * FROM table1"); $Connect->execute(); $unConnects=$Connect->fetchAll(); $retourneresultat=$Connect->rowCount(); if($retourneresultat = 1) { try { // On crée la connexion avec la base de données $db2 = new PDO('mysql:host=localhost;dbname=table2','root',''); $db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db2->exec('SET NAMES UTF8'); } catch(PDOException $e) { // Oups !!! On a rencontré un problème die("Error : " . $e->getMessage()); } foreach($unConnects as $AffununConnects) { // requete pour savoir si l'utilisateur existe $insert = $db2->prepare('INSERT INTO table2 ('price2') VALUES(:price2) WHERE 'product_id'=:product_id'); $insert->bindParam(':price2', $AffununConnects['price1']); $insert->bindParam(':product_id',$AffununConnects['product_id']); $insert->execute(); $utilresultat=$insert->rowCount(); } }
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 15:43
11 févr. 2013 à 15:43
Tout ça pour un bête update ?
mandolorien
Messages postés
109
Date d'inscription
dimanche 9 septembre 2012
Statut
Membre
Dernière intervention
9 mars 2018
3
11 févr. 2013 à 16:22
11 févr. 2013 à 16:22
un bête update , n'est pas forcement bête pour les codeurs confirmé(e)s de plus c'est pas un update mais un insert ;)
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 16:24
11 févr. 2013 à 16:24
donc en gros, t'as pas du tout compris ce qu'il essayait de faire, c'est ça ?
mandolorien
Messages postés
109
Date d'inscription
dimanche 9 septembre 2012
Statut
Membre
Dernière intervention
9 mars 2018
3
11 févr. 2013 à 17:21
11 févr. 2013 à 17:21
je cite :je cherche un moyen de récupérer la valeur 'price1' pour l'intégrer dans 'price2' en fonction du 'product_id' (qui est déjà renseigné dans ma deuxième table).
c'est ce que j'ai respecté NON ???
c'est ce que j'ai respecté NON ???
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 févr. 2013 à 22:34
11 févr. 2013 à 22:34
la seconde table possède déjà le champ product_id avec les mêmes données que la première table, ça ne risque donc pas d'être un insert, mais je dis ça, je dis rien, je ne suis pas un codeur confirmé moi.