detecter changement de valeur d'un champ en sql

le Sam 22 Jan 2011 04:40

Bonjour,
J'ai une colle ;
J'aimerais détecter le changement d'une valeur d'un champ en SQL.

Exemple de table
Code: Tout sélectionner
ID   valeur      timestamp
5     4              11111             ici, id N°5 => 4
5     4              22222             toujours id 5 => 4
7     12            33333
5     4              44444             id5 => 4
8     11            55555
5     8              66666             id5 =>8 ; Je veut détecter ce changement de 4 ver 8
6     65            77777
5     8              88888
5     8              99999


je ne trouve pas comment faire cela en sql (mysql)

pour l'instant je me contente de classer la table par ID et de detecter ce changement en php (solution très couteuse en temp machine).

j'ai une piste, rajouter un nouveau champ : "détection de changement"
A chaque insertion je teste si il y a un changement et j'enregistre le résultat dans ce nouveau champ..

l'ideal serait peut être de réussir a écrire une requette capable de détecter cela (mais je n'y arrive pas)

Avis au pros du sql, un coup de pouce svp ;)


n°1 : Essayez SEO Soft, le logiciel de référencement open source

Avatar de l’utilisateur   
nifrou
Like Rank Total : 16    
Administrateur
 
Messages : 1866
Inscription : Ven 29 Fév 2008 03:40







    
 

le Sam 22 Jan 2011 16:30

Salut,

je t'invite à regarder du côté des "triggers": un outil géré par les SGBD et notamment MySql qui effectuent certaines actions lorsque certains évènement se produisent sur les tables (insertion/update...). Ça devrait faire l'affaire dans ton cas et ce sera beaucoup plus propre et économe que ce que tu fais actuellement.

@+



hinanooos    
Nouveau
 
Messages : 1
Inscription : Sam 22 Jan 2011 16:25

le Sam 22 Jan 2011 17:51

Bonjour
Merci beaucoup pour ce très bon conseil, cela a l'air très bien pour mon cas
C'est très gentil de t'a part ;)


n°2 : Restez informé, suivez toutes les actualités du référencement et des moteurs de recherches

Avatar de l’utilisateur   
nifrou
Like Rank Total : 16    
Administrateur
 
Messages : 1866
Inscription : Ven 29 Fév 2008 03:40

le Sam 22 Jan 2011 17:51

A tester

Code: Tout sélectionner
select distinct valeur from test  where id=5 order by TIMESTAMP desc;


Ma table ici s'appelle test

Quand le résultat est de deux valeurs, cela veut dire qu'il y a changement.



Avatar de l’utilisateur   
yojaf    
Actif
 
Messages : 29
Inscription : Dim 2 Jan 2011 02:44

le Sam 22 Jan 2011 19:43

Encore un test, cette fois pour sortir les valeurs modifiées dans toutes la table pour la veille par exemple, en supposant que tu fais une insertion par jour d'un id.

Code: Tout sélectionner
select id, valeur, max(TIMESTAMP), count(*) as modif from test where TIMESTAMP>='2010-01-11' group by id, valeur HAVING count(*) = 1 order by id, TIMESTAMP desc ;


Pour mes test mon TIMESTAMP est date.
Si ce que je propose ne résoud pas le problème (dans le cas où les insertions des id ne sont pas à intervalle régulier), il permet au moins d'alléger la charge pour le serveur php.



Avatar de l’utilisateur   
yojaf    
Actif
 
Messages : 29
Inscription : Dim 2 Jan 2011 02:44

le Lun 24 Jan 2011 02:56

merci yojaf
Ce sont des bonne piste.
par contre ce dont j'ai besoin est un peut plus complexe parce que je n'ai aucune informations a priori sur les données qui sont dans la table (id, date, intercallage) .
Et je veux que cela trouve tous les cas pas seulement.
Cela dit t'on approche se situe entre les deux autre la mienne et celle de yojaf (en terme de performance et de complexité personnelle de mise en œuvre) donc j'étudie aussi ta méthode.


n°3 : Vous appréciez une discussion, augmentez sont Like Rank afin d'en faire profiter les autres membres
Vous appréciez la réponse d'un membre, remerciez-le en votant dans sa page de profil (cliquez sur son nom pour l'ouvrir)

Avatar de l’utilisateur   
nifrou
Like Rank Total : 16    
Administrateur
 
Messages : 1866
Inscription : Ven 29 Fév 2008 03:40







    
 

Retourner vers Développement d'un site web




Autres sujets proches :
Comment choisir le domaine d'un site?       11/05/2009
Faut-il changer la conception d'un site multilingue       21/01/2010
Referencement d'un nom en .tel       23/04/2010
Changement de site       14/01/2011
Référencement différent d'un Navigateur à un autre       16/01/2011
Conseils pour le référencement d'un site       14/03/2011
Référencer les images d'un site       06/04/2011
Augmenter le traffic d'un site web       21/12/2011