Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1615 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Double datage de valeurs et selection des plus recentes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Double datage de valeurs et selection des plus recentes

n°1871024
alcomachao​n
Pamplemousse
Posté le 08-04-2009 à 12:13:18  profilanswer
 

Bonjour a tous,
 
J'ai un probleme sur le double datage de donnees et leur selection. En gros, j'ai une table qui contient des donnees relatives a la valeur d'un objet pour une date donnee.
Cette valeur n'est pas forcement connue a la date T et peut fluctuer avant que sa valeur soit definitivement determinee.
 
Par exemple, le prix de l'objet A au 01-04-2009 avait ete estime etre 400€ le 29-03-2009, revu a 390€ le 02-04-2009 et le reporting nous dit le 03-04-2009 qu'en fait il etait a 410€.
 
Au lieu d'update la table pour changer la valeur au fur et a mesure, on veut pouvoir garder une trace des fluctuations des estimations. Ainsi la table a les champs suivant:
 
id_object | date_value | entry_date | value
 
Si on reprend mon exemple on aurait les entrees suivantes :
 
001 | 01-04-2009 | 29-03-2009 | 400
001 | 01-04-2009 | 02-04-2009 | 390
001 | 01-04-2009 | 03-04-2009 | 410
 
 
Maintenant ce que j'aimerai c'est recuperer dans une query l'entree pour chaque objet qui corresponde au dernier prix que l'on aura entre (prix qui s'avere etre le plus exact).
 
J'ai tente d'utiliser cette query:
 

Code :
  1. SELECT id_object, date_value, Max(entry_date), value
  2. FROM objet_price
  3. GROUP BY id_object


 
Mais ca ne me donne pas les entry correspondantes a la Max(entry_date) qui sont celle que j'aimerai pour chaque date_value et id_object.
Je ne dois pas regarder le probleme comme il faut mais je ne vois pas trop d'autre solution si ce n'est de selectionner chaque id_object/date_value et de refaire une query ou je selectionnerai la valeur maximum

mood
Publicité
Posté le 08-04-2009 à 12:13:18  profilanswer
 

n°1871045
alcomachao​n
Pamplemousse
Posté le 08-04-2009 à 13:01:47  profilanswer
 

Bon je crois avoir trouve, je mets la solution au cas ou ca puisse servir a quelqu'un d'autre:
 
Le probleme vient du fait que la fonction Max() ne considere pas chaque entree, mais plutot les valeurs d'un colonne.
 
Du coup il faut contourner le probleme avec une sous-query
 

Code :
  1. SELECT * FROM object_price p1
  2. WHERE entry_date =
  3. (
  4. SELECT Max(entry_date) FROM object_price p2
  5. WHERE p1.id_object = p2.id_object AND p1.date_value = p2.date_value
  6. )
  7. GROUP BY id_object, date_value


 
Ainsi pour chaque object et chaque date_value, on va recupere la value correspondant a l'entry_date la plus recente.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Double datage de valeurs et selection des plus recentes

 

Sujets relatifs
Requête Mysql sans tenir compte des accents[mysql] limit + not exists
[PHP] Caracteres Chinois + mysql + utf8 + PEAR DB = ?@?#$MySQL - connection PHP/MySQL - problème de socket ?
Selection plage de cellule[MYSQL JDBC] et des problèmes d'accents à devenir dingue !!
j n arrive pas à créer une connexion java vers base de données mysqlBdD MySQL en local
Sommer une cellule contenant plusieurs valeursAméliorer une requête MySQL
Plus de sujets relatifs à : [MySQL] Double datage de valeurs et selection des plus recentes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR