[MySQL] historiser mes enregistrements ?

historiser mes enregistrements ? [MySQL] - Programmation

Marsh Posté le 05-04-2002 à 11:46:13    

Bonjour ,
 
voila mon soucis  
 
ma table  
 
Numero Ref  | article | prix | ID  
12345           x        A1     1
 
Quand je modifie un prix  jaimerais que l enregistrement soit fait sur une nouvelle ID et que je garde l ancien prix dans ma base .  de maniere a avoir  
 
Numero Ref  | article | prix | ID  
12345           x        A1     1
12345           x        A2     2
 
L ID est en autoincrement . Il est imperatif pour moi de garder les traces de mes aciens afin de pouvoir realiser des graph par exemple  
 
Qq un a une idee sur la facon dont je dois proceder ?  
 
Car actuellement une update du prix efface l ancien .  
 
Merci d avance
 
miga

 

[jfdsdjhfuetppo]--Message édité par GMIGA--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 05-04-2002 à 11:46:13   

Reply

Marsh Posté le 05-04-2002 à 11:51:46    

tu peu creer une nell table "historique"
avec ces champs
 

Code :
  1. -----------------------------------------------------
  2. |#ID      | date | Numero Ref  | article | prix | ID| 
  3. -----------------------------------------------------
  4. |         |      |             |         |      |   |
  5. -----------------------------------------------------

 

[jfdsdjhfuetppo]--Message édité par erwan_--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 05-04-2002 à 11:56:36    

Merci pour ta reponse ,
 
Neanmois je ne desire pas une 2 eme table j aimerais que mes enregistrement coexistent au sein de la meme table et que lors de la modification d une reference elle prennent un nouvel ID ;)

Reply

Marsh Posté le 05-04-2002 à 12:00:10    

je vois pas l'objet de la question ... au lieu de faire un update tu inseres une nouvelle ligne

Reply

Marsh Posté le 05-04-2002 à 12:01:49    

Fait un insert au lieu d'un update si la ref existe déjà.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-04-2002 à 12:02:17    

Grilled ! :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 05-04-2002 à 12:02:57    

GMIGA a écrit a écrit :

Merci pour ta reponse ,
 
Neanmois je ne desire pas une 2 eme table j aimerais que mes enregistrement coexistent au sein de la meme table et que lors de la modification d une reference elle prennent un nouvel ID ;)  




 
hé,hé le pb, c'est que si tu fé ca, ca veut dire que pour un même Numero Ref, tu peux avoir plusieurs prix :-/
 
Une solution pur récupérer le dernier des prix sera :
selectionner tout d'abord les enregistrement dont le n° ref est celui recherché , trié sur l'Id en ordre décroissant et de recup' le premier  :pt1cable:

 

[jfdsdjhfuetppo]--Message édité par erwan_--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 05-04-2002 à 12:09:54    

Tout d abord merci pr vos reponses ,  
 
Effectivement je vais avoire plusieurs references avec des prix differents , mais cela ne me gene guere il suffit que j adapte ma query pour pour recuper la derniere ID en date en fonction de la reference . ( c est ce que disait Erwann ,) ) .
 
Par contre mon insert pose soucis , qd je veux faire un insert il n incremente pas l ID il me dit "Duplicate entry '1' for key 1" .
ID est ma clef primaire.  
Il y a une commande pr contourner cela ?  
 
Merci d avance

Reply

Marsh Posté le 05-04-2002 à 12:12:38    

insert into tatable(ref,article,prix) values (X,Y,Z) ca marche pas ??

Reply

Marsh Posté le 05-04-2002 à 13:51:59    

Merci à tous pour votre aide,  
 
J arrive a faire coexister mes ref av mes prix differents et j ai une nouvelle ID ;) .  
Il me reste a determiner la query pour afficher le numero de ref desiré avec la derniere ID en date ;)  
 
Si qqun a une idee pour la query . j ai une ptite idee mais bon ;) rien ne vaut plusieurs avis.  
 
Merci a vous tous .  
 
miga

Reply

Marsh Posté le 05-04-2002 à 13:51:59   

Reply

Marsh Posté le 05-04-2002 à 14:08:49    

ben qqchose comme "select * from tatable where id = (select max(id) from tatable where ref='cequetucherches';)"

Reply

Marsh Posté le 05-04-2002 à 14:21:02    

hmmm si la table à 100000 enregistrement ca rique de bouffer les ressources ca !
 
Moi j'aurais fait un truc du genre
 
create temporary table TEMP
(Select * form TATABLE where ref=TAREF order by DATE Desc);
 
puis un autre select pour recup' le premier enregistrement de la table TEMP
 
Bon  c'est pas la syntaxe exact mais faut chercher aussi un peu, ya GOOGLE ;-)
 
http://www.google.fr/images/res0.gifhttp://www.google.fr/images/res1.gifhttp://www.google.fr/images/res2.gif

Reply

Marsh Posté le 05-04-2002 à 14:22:30    

erwan_ a écrit a écrit :

hmmm si la table à 100000 enregistrement ca rique de bouffer les ressources ca !
 
Moi j'aurais fait un truc du genre
 
create temporary table TEMP
(Select * form TATABLE where ref=TAREF order by DATE Desc);
 
puis un autre select pour recup' le premier enregistrement de la table TEMP
 
Bon  c'est pas la syntaxe exact mais faut chercher aussi un peu, ya GOOGLE ;-)
 
http://www.google.fr/images/res0.gifhttp://www.google.fr/images/res1.gifhttp://www.google.fr/images/res2.gif  




 
si je ne m'abuse il n'a jamais parlé de dates ...

Reply

Marsh Posté le 05-04-2002 à 14:24:09    

oui je fais mumuse avec le select max ;)  
 
Merci a vous pour vos reponses ;)  
 
google ah oui ;) mais comment se connecte t on ? ;)  
 
 
Un grand merci à tous ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed