IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Update entre 2 tables de 2 bases de données différentes


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut Update entre 2 tables de 2 bases de données différentes
    Bonjour,

    j'ai fait bcp de recherches sur les forums et de tests mais je n'arrive pas à faire fonctionner un update pour mettre à jour des stocks en fonction de qtés sorties.
    - BD artvarpeel : table peel_stocks
    - BD artcreatif : table produits_peel avec les "qtesortie"

    je mets le script en entier, car j'ai réussi à faire communiquer les 2 BDD sur une fonction INSERT mais pas sur l'UPDATE (point 7 de mes commentaires).
    Si quelqu'un peut m'aider !!!!
    Je joins des copies d'écran des tables.Nom : explic 2BDD.jpg
Affichages : 297
Taille : 66,3 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <?php
    // BASE 2
    $host2 = "localhost"; 
    $user2 = "LM"; 
    $pass2 = "castellet"; 
    //$bdd2 = "artcreatif"; // nom de la bdd où sont enregistrés les mouvements de stocks par reference (magasin physique)
     
    //BASE ORIGINALE
    $host1 = "localhost"; 
    $user1 = "LM1"; 
    $pass1 = "castellet"; 
    //$bdd = "artvarpeel"; // nom de la BD où on a le total du stock par id (site internet qui vend certains articles du magasin)
     
     
    $bdd1 = mysql_connect($host1,$user1,$pass1);
    $bdd2 = mysql_connect($host2,$user2,$pass2);
     
    //1-vidage table temporaire produits_peel sur artcreatif
    mysql_query("TRUNCATE table artcreatif.produits_peel",$bdd2);
     
    //2-selection des colonnes id-ref pour avoir la correspondance de la table artvarpeel-peel_produits
    $res = mysql_query("SELECT peel_produits.reference, peel_produits.id, peel_produits.nom_fr 
    				   FROM artvarpeel.peel_produits",$bdd1)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
    while ($row = mysql_fetch_array($res))
    {
    	// 3-copie des 3 colonnes de artvarpeel-peel_produits dans artcreatif-produits_peel
      mysql_query("INSERT INTO artcreatif.produits_peel (id, reference, nom_fr) 
    	          VALUES ('".mysql_real_escape_string($row['id'])."','".mysql_real_escape_string($row['reference'])."','".mysql_real_escape_string($row['nom_fr'])."')",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
    }
     
    echo"Copie effectuée";
     
     
    //4-selection des qtes sorties de la table temporaire sortiecaisse (mouvements de stocks)
    $res1 = mysql_query("SELECT sortiecaisse.reference, sortiecaisse.qtesortie 
    					FROM artcreatif.sortiecaisse",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
     
    echo" - Sélection effectuée";
     
    while ($row = mysql_fetch_array($res1))
    {
    	// 5-MAJ des qtes sorties de artcreatif-produits_peel avec celles de sortiecaisse
      mysql_query("UPDATE artcreatif.produits_peel 
    			  JOIN artcreatif.sortiecaisse ON produits_peel.reference = sortiecaisse.reference 
    			  SET produits_peel.qtesortie = sortiecaisse.qtesortie",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
    }
     
    echo " - MAJ qtés sorties de produits_peel effectuée ";
     
     
         //6-sélection des colonnes de produits-peel où il y a eu des sorties de stocks
     
    $res2 = mysql_query("SELECT * FROM artcreatif.produits_peel WHERE qtesortie<>0",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
     
    echo" - Sélection produits-peel effectuée";
     
    while ($row=mysql_fetch_array($res2)){ 
    echo $row[reference] ;
    echo '- ';
    echo $row[qtesortie] ;
    }
     
     
     
    while ($row = mysql_fetch_array($res2))
    {
     
    //7-recalcul des qtes en stocks sur la table peel_stocks 
     
     mysql_query("UPDATE artvarpeel.peel_stocks 
    			 JOIN artcreatif.produits_peel ON artcreatif.produits_peel.id = artvarpeel.peel_stocks.produit_id
    			 SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - (SELECT qtesortie FROM artcreatif.produits_peel)
    			 WHERE artvarpeel.peel_stocks.produit_id = (SELECT id FROM artcreatif.produits_peel)")
    			 or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
    }
     
    echo " - MAJ qtés sorties de produits_peel effectuée ";
     
    ?>
    en vous remerciant par avance, car je galère, je n'ai pas utilisé de php/sql depuis un moment

    Larentia

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si je comprends bien, c'est donc cette requête qui pose problème ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE artvarpeel.peel_stocks 
    			 JOIN artcreatif.produits_peel ON artcreatif.produits_peel.id = artvarpeel.peel_stocks.produit_id
    			 SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - (SELECT qtesortie FROM artcreatif.produits_peel)
    			 WHERE artvarpeel.peel_stocks.produit_id = (SELECT id FROM artcreatif.produits_peel)

    La jointure va faire correspondre les lignes des deux tables. Inutile d'ajouter la même condition dans le WHERE, d'autant plus que là tu mets en égalité un produit_id avec l'ensemble des id de l'autre table.

    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE artvarpeel.peel_stocks 
    JOIN artcreatif.produits_peel ON artcreatif.produits_peel.id = artvarpeel.peel_stocks.produit_id
    SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - artcreatif.produits_peel.qtesortie
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut Ca ne marche pas !
    Bonjour et merci de m'aider,

    je viens de tester mais ça ne marche pas ! aucun effet sur le stock...

    Larentia

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut Personne ne peut m'aider ???
    je suis vraiment bloquée !!!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut ça marche avec ça !
    mysql_query("UPDATE artvarpeel.peel_stocks
    SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - " . $row['qtesortie'] .
    " WHERE artvarpeel.peel_stocks.produit_id = " . $row['id'], $bdd1 )
    or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Update d'une table dans la base des données mysql php
    Par glodybiss4 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/02/2012, 16h51
  2. Réponses: 2
    Dernier message: 17/10/2011, 08h08
  3. Réponses: 7
    Dernier message: 02/09/2010, 02h57
  4. lien entre les tables d'une base de données Mysql
    Par chifa dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/10/2007, 12h42
  5. Réponses: 3
    Dernier message: 24/09/2007, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo