|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 13 ![]() |
Bonjour,
Je dispose d'une table [Prix budget] composée de client, article, prix_article et date (qui correspond a la date ou le prix a été relevé). Cette table est mise a jour dès que l'on relève un prix pour un article donné chez un client donné. J'aimerai faire une requête qui me donne tous les prix, articles et le noms du client. Jusque là tout va bien. Mais si plusieurs prix ont été relevé pour un meme client et article il faudrait que la requête m'affiche seulement le dernier prix relevé (donc le plus récent) et c'est ici que ça bloque. Je ne sais pas comment formuler la requête... Avez vous une idée a me proposer? Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
C'est toujours une peu pénible ce genre de truc.
La solution est de faire une requête qui te donne la date MAX pour chaque produit puis de faire une requête jointe à celle-ci sur le produit et la date max. Ainsi tu récupère les infos pour la date la plus récente. Si le prix le plus élevé est toujours le dernier tu pourrais aussi directement prendre le max du prix. Enfin, personnellement quand j'ai des trarifs, je fait une table du type : tarif: ==== CodeProduit DateDebutPrix DateFinPrix (pour le prix courant DateFin est 9999/12/31) Prix Si tu n'a pas de recouvrement de période il est alors TRES simple de trouver le prix a appliquer à une date données : Code sql :
SELECT * FROM Tarif WHERE [dateVoulue] BETWEEN DateDebutPrix AND DateFinPrix; A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 13 ![]() |
Dsl je sais pas ce qu'il s'est passé...
Merci, je testerai ça demain au boulot. Je pense essayer la première solution que tu m'a donné puisque c'est prévu qu'il y ai beaucoup d'enregistrement (une 30aine d'articles par magasins et environ 100 magasins...). Mais requete jointe c'est une requete imbriquée? Merci. |
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Non, c'est un exemple de requête qui te permet de sélectionner les prix de tes articles pour une date donnée sans avoir à utiliser MAX.
Cela simplifie la logique et c'est généralement plus rapide, mais demande de mettre à jour la date de fin du prix précédent à chaque ajout de prix A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 13 ![]() |
Ok je vois. Mais le soucis est qu'il faudrait pour chaque saisie d'un prix déjà présent dans la BDD rechercher le prix précédent pour lui changer la date de fin (et nous devrions avoir un grand nombre de saisit à effectuer chaque jour donc cela prendrait beacoup de temps...).
J'ai donc essayé MAX(prix) puisque qu'il est fort possible que les prix, quand ils changent c'est pour augmenter, avec "MAX prix" mais il me renvoie quand meme une ligne pour chaque enregistrement de la table (si un prix a été relevé 2 fois pour un meme produit chez un meme client il me renvoi les deux au lieu du prix maximum). Merci |
|
|
00
|
|
|
#6 | ||||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 462 ![]() |
Comme visiblement ce n'est pas fini j'ai 'dérésolu' la discussion :-).
Ton SQL pour trouver ta date max devrait ressembler à cela : Code sql :
Code sql :
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Étudiant Inscription : avril 2011 Messages : 13 ![]() |
Bonjour,
J'ai totalement changé de méthode comme je n'y arrivais pas de cette façon (J'ai séparé cette table en 2 et pu de ce fait créer un formulaire et un sous formulaire dans lequel il est beaucoup plus simple de modifier un prix lorsqu'il change car il faut juste trouver le magasin voulu). Et comme cette solution marchait j'ai coché résolu meme si le mot approprié était plutot "résolu par contournement du probleme" Encore merci pour ton aide marot_r. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com