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 !