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

PHP & Base de données Discussion :

Comparer 2 tables


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut Comparer 2 tables
    Bonjour,

    J'ai 2 tables mysql dont la structure est identique.
    La première table est une sauvegarde qui remonte a 1 an environ. La 2ème est la table actuelle. Quelques enregistrement on été perdus dans cette table actuelle à cause d'un bug du script php, que je viens seulement d'identifier.

    Je souhaite récupérer les données de l'ancienne table pour les intégrer dans la table actuelle.
    Les tables n'ont pas de clés primaires pour des raisons purement technique.

    Est-il possible de réaliser un script qui me permettrait de réaliser cette tâche ?
    Pourriez-vous me dessiner une ébauche de ce script SVP, mes compétences en php étant limité à cause d'une pratique qui remonte à plus de 6 ans...

    Merci à vous

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    je pense qu'une simple requête fera l'affaire:
    http://sql.developpez.com/sqlaz/dml/#L1.5

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par billoum
    Salut,

    je pense qu'une simple requête fera l'affaire:
    http://sql.developpez.com/sqlaz/dml/#L1.5
    Merci bcp pour cette réponse rapide, mais je crois qu'il est nécessaire dans mon cas de comparer chaque enregistrement de chaque table et d'ajouter les enregistrements de l'ancienne table dans la nouvelle si cette dernière ne les contient pas.

    Comment réaliser ce script ???
    Je sais, je tire sur la corde mais ça serait vraiment sympa de me donner un coup de pouce car c'est pour le boulot et j'ai plus trop le temps de me remettre à php.

    Merci de ta compréhension

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Le prob c'est que tu n'as pas de clé primaire qui te permette d'identifier un enregistrement.

    Tu pourrais utiliser l'opérateur NOT IN (ici) pour construire une condition . Ca donnerait qlqchose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO table1 VALUES 
                   SELECT * from table2 WHERE NomCle NOT IN (SELECT NomCle from table1)
    Sinon comment fais-tu pour identifier tes enregistrements?

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par billoum
    Le prob c'est que tu n'as pas de clé primaire qui te permette d'identifier un enregistrement.

    Tu pourrais utiliser l'opérateur NOT IN (ici) pour construire une condition . Ca donnerait qlqchose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO table1 VALUES 
                   SELECT * from table2 WHERE NomCle NOT IN (SELECT NomCle from table1)
    Sinon comment fais-tu pour identifier tes enregistrements?
    L'identification des enregistrements se fait au niveau du code en associant un numéro siret et une clé attribuée à chaque entreprise. Cependant ces 2 numéros seuls ne peuvent suffir à identifier une société, donc être utilisés (l'un ou l'autre) comme clé primaire.

    Pour reprendre ton id, j'ai réalisé la requete SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO   actuelle (champ1,champ2,champ3,...)
           SELECT champ1, champ2, champ3 ...
           FROM   ancienne
    pour ajouter le contenu de l'ancienne table dans la table actuelle puis j'ais supprimé les doublons dans cette table grâce à cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $conn_db =mysql_connect('localhost','root','');
    $db = mysql_select_db("MyDB");
    //Création de la table temporaire
    $strsql = "CREATE TABLE tabletemp SELECT DISTINCT * FROM table1";
    mysql_query( $strsql, $conn_db);
    //Vidage de la table d'origine
    mysql_query("DELETE FROM table1", $conn_db); 
    //Réinjection des enregistrements
    $strsql = "INSERT INTO table1 SELECT * from tabletemp";
    mysql_query($strsql, $conn_db);
    ?>
    L'opération 1 se déroule sans problème, mais j'ai des doutes sur le script php car le nombre d'enregistrements restants dans la table actuelle (qui devrait au moins être supérieur) est légérement inférieur au nombre d'enregistrement relevés avant cette opération ...

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Il y a quelques señaines, un membre de Développez.com a écrit un tel script. Je pense qu'une recherche dans le forum PHP sur "synchroniser" ou une variante te donnera de bons résultats.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Citation Envoyé par anti-conformiste
    L'opération 1 se déroule sans problème, mais j'ai des doutes sur le script php car le nombre d'enregistrements restants dans la table actuelle (qui devrait au moins être supérieur) est légérement inférieur au nombre d'enregistrement relevés avant cette opération ...
    Pê qu'il y avait déjà des doublons dans ta table actuelle et/ou dans l'ancienne. Parce que ton code me semble bon.

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par billoum
    Pê qu'il y avait déjà des doublons dans ta table actuelle et/ou dans l'ancienne. Parce que ton code me semble bon.
    Bin ça c'est pas totalement impossible, parce que le résultat après épurage est pas complétement incohérent...

Discussions similaires

  1. Comparer 2 tables sans checker chaque row
    Par BoOom dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 04/05/2006, 13h21
  2. [C#][VS2k5]Comparer 2 tables sans checker chaque row?
    Par BoOom dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/04/2006, 15h27
  3. Comparer 2 tables de structure identique.
    Par FMaz dans le forum Requêtes
    Réponses: 13
    Dernier message: 31/03/2006, 22h48
  4. Réponses: 7
    Dernier message: 20/02/2006, 16h18
  5. [MySQL] Comparer 2 tables
    Par v4np13 dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h18

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