Insertion de données MYSQL par comparaison entre deux tables
                    
        
     
             
                    arguul
    
        
    
                    Messages postés
            
                
     
             
            6
        
            
                                    Statut
            Membre
                    
                -
                                     
JooS Messages postés 2705 Statut Membre -
        JooS Messages postés 2705 Statut Membre -
        Bonjour, à toutes et à tous,
J'ai effectué quelques recherches sans trouver de réponse à mon problème, ainsi j'espère ne pas poster ici de doublon.
Voici mon problème,
J'ai deux tables MySQL de structures différentes, l'une avec les champs 'product_id' et 'price1', l'autre avec 'product_id' et 'price2'. Les champs 'product_id' sont rempli pour les deux tables, mais pas dans le même ordre, et la colonne 'price2' est vide.
Je souhaiterais récupérer les données 'price1' et les insérer dans le champs 'price2' de ma seconde table, en respectant la correspondance avec le 'product_id' de la première table.
Existe-t-il une requête MySQL permettant cette opération, ou bien un script PHP qui permettrait d'automatiser ces insertions.
Merci par avance à celles ou ceux qui prêteront attention à ce message.
Cordialement.
            
            
                
            
                
    
    
    
        J'ai effectué quelques recherches sans trouver de réponse à mon problème, ainsi j'espère ne pas poster ici de doublon.
Voici mon problème,
J'ai deux tables MySQL de structures différentes, l'une avec les champs 'product_id' et 'price1', l'autre avec 'product_id' et 'price2'. Les champs 'product_id' sont rempli pour les deux tables, mais pas dans le même ordre, et la colonne 'price2' est vide.
Je souhaiterais récupérer les données 'price1' et les insérer dans le champs 'price2' de ma seconde table, en respectant la correspondance avec le 'product_id' de la première table.
Existe-t-il une requête MySQL permettant cette opération, ou bien un script PHP qui permettrait d'automatiser ces insertions.
Merci par avance à celles ou ceux qui prêteront attention à ce message.
Cordialement.
        A voir également:         
- Insertion de données MYSQL par comparaison entre deux tables
- Fuite données maif - Guide
- Nombre de jours entre deux dates excel - Guide
- Comparaison million milliard - Accueil - Technologies
- Insertion table des matières word - Guide
- Touche insertion clavier - Guide
10 réponses
                        
                    à 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...
                        
                    en une seule requête :
    
                UPDATE table2 SET price2=(SELECT price1 FROM table1 WHERE table1.product_id = table2.product_id)
                        
                    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
                        
                    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.
                        
                    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
                        
                    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
                        
                    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
// 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();
	}
}
