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

Langage PHP Discussion :

php retourner les différences entre deux tables


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut php retourner les différences entre deux tables
    Bonjour,

    Je viens sollicité votre aide suite à "un petit problème" avec mon script ou du moins son écriture...

    En effet, je travaille avec deux tables SQL :
    • criter_live qui est actualisé automatiquement toutes les X minutes avec AJAX
    • worksheets qui est remplie de manière manuelle par un utilisateur


    Avant d'aller plus loin, je vous ajoute le schéma de ma base de données :

    +--------------------------------------------------------------------------------------+
    |                               criter_live & worksheets                               |
    +--------------------------------------------------------------------------------------+
    | id | machine_id | entry_number | machine_type | entry_date | left_date | left_number |
    +----+------------+--------------+--------------+------------+-----------+-------------+
    | 1  | 76801      | R88901       | -Z           | timestamp  | timestamp | S79980      |
    +----+------------+--------------+--------------+------------+-----------+-------------+
    | 2  | 82501      | R89874       | -X           | timestamp  | timestamp | S98780      |
    +--------------------------------------------------------------------------------------+
    
    Alors, mon problème... Je souhaite effectuer une comparaison entre ces deux tables en prenant pour points de départs tous les enregistrements dont entry_date est supérieur au timestamp du jour à minuit... L'objectif de ce script est de me retourner les lignes qui différent dans la table worksheets (par rapport à criter_live) afin d'y appliquer les modifications (les champs machine_id, machine_type, entry_date et left_date peuvent varier, de même qu'il peut manquer une ligne dans l'une des bases de données).

    Pour effectuer des comparaisons et me retourner à chaque fois les enregistrements qui sont différents j'utilisais ce code (pour machine_id, entry_date et left_date) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT machine_id FROM criter_live WHERE entry_date > $currentdate_today_midnight AND machine_id NOT IN (SELECT machine_id FROM worksheets)
    Sauf, que je peux avoir plusieurs machine_id le même jour mais qui pour autant n'ont pas le même entry_number ou left_number... Je précise que dans les deux tables on retrouvera les mêmes entry_number et left_number (sauf s'il manque une ligne qui n'est pas dans l'une des bases évidemment...).

    Dans des cas concrets, si vous n'avez pas compris :
    • Vérification de criter_live et worksheets : left_date pour une certaine entry_number est différent dans worksheets par rapport à la base de référence criter_live : application de la modification
    • Vérification de criter_live et worksheets : entry_date pour une certaine entry_number est différent dans criter_live par rapport à la base de référence criter_live : application de la modification sur worksheets (on applique toujours les modifications sur worksheets)
    • Vérification de criter_live et worksheets : un nouveau entry_number apparaît dans criter_live qui n'apparait pas dans worksheets : on applique la modification sur worksheets (nouvelle enregistrement en base)
    • Vérification de criter_live et worksheets : un entry_number n'apparait plus dans criter_live mais existe dans worksheets : on applique la modification dans worksheets (suppression de l'enregistrement)


    J'espère que vous aurez compris mon problème et sis vous avez des questions n'hésitez pas !
    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il serait plus simple de :
    • ajouter un champ 'update_time' (timestamp) dans chaque table
    • updater ce champ à chaque modification sur une ligne (update_time = time() )
    • Prendre les lignes dans "criter_live" dont le 'update_time' est supérieur au dernier 'update_time' enregistré dans "worksheets"


    A moins que je n'ai rien compris...

  3. #3
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 17
    Par défaut
    Bonjour jreaux62,

    Je sais c'est un peu difficile à comprendre... Le problème du champ update_time c'est qu'il serait actualisé toutes les X minutes sur la base criter_live étant donné que ce cette base est actualisée par ajax...

    En faites, la table criter_live est donc mis à jour automatiquement et worksheets est complétée manuellement.

    Je cherche alors un moyen de "détecter/trouver" les différences qui peuvent exister dans ces bases de données SACHANT QUE entry_number et left_number sont identiques dans les deux bases MAIS QUE il peut manquer ou avoir un enregistrement en plus ou un moins dans l'une des deux bases (dans ce cas on supprime/crée un nouvel enregistrement SEULEMENT dans la base manuel, aucune modification de la base automatique). La base de référence criter_live (qui contient les informations actualisées).

    J'espère avoir été clair ?

Discussions similaires

  1. [AC-2007] Trouver toutes les différences entre deux tables
    Par missmissy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/08/2014, 08h04
  2. Différence entre deux tables
    Par fabricedallara dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 24/05/2012, 15h31
  3. Réponses: 9
    Dernier message: 12/07/2011, 18h25
  4. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 16h21
  5. Réponses: 4
    Dernier message: 16/04/2008, 12h12

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