|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Bonjour,
J'ai une table MY_TABLE avec des champs appelés ID, VALUE_DATE et QUANTITY. Pour une VALUE_DATE donnée, j'ai par exemple plusieurs ID possibles et donc plusieurs QUANTITY. Ce que je veux faire, c'est une requête qui me donne, pour chaque VALUE_DATE compris entre une date de départ et une date d'arrivée, la QUANTITY dont l'ID est le plus grand J'avais pensé à quelque chose du genre : Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Cela ne donnera pas le résultat attendu.
Êtes-vous sûr de votre besoin : le besoin le plus courant est de chercher l'ID qui a la plus grande quantité. Pour vous aider, il faut d'abord écrire une première requête qui retourne le plus grand ID par date, puis effectuer une jointure avec votre même table sur ces deux colonnes afin d'aller chercher la quantité correspondante.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 14 ![]() |
Mon besoin est effectivement différent du cas courant.
Je m'explique : l'ID correspond à un calcul, et un même identifiant donne lieu à toute une série de VALUE_DATE. Ce que je souhaite c'est chercher la QUANTITY pour une date donnée, sachant que si l'on trouve deux ID possibles on prendre l'ID maximum. Si je travaille avec une seule date donnée, par exemple la première '01/01/2009', la requete est : Code :
SELECT QUANTITY FROM MY_TABLE WHERE VALUE_DATE='01/01/2009' AND CALC_ID=( SELECT MAX(CALC_ID) FROM MY_TABLE WHERE VALUE_DATE='01/01/2009' ) |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Ok pour la précision, mais ma réponse reste la même :
Citation:
__________________
Email : http://scr.im/waldar |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 14 ![]() |
merci pour la réponse, mais n'étant pas un expert en SQL j'aimerais bien connaitre le contenu précis de cette requête... Et est-ce que ce sera au final une seule requête (complexe) ou bien une boucle puis une requête pour chaque étape de la boucle ? le but recherché étant la rapidité d'exécution.
Par ailleurs, en testant la requête que j'ai écrite au début du message, elle semble fonctionner ... |
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Ce sera une seule requête, pas vraiment complexe.
J'aurai préféré que vous trouviez tout seul cela dit, surtout que votre première requête était encourageante ! Code :
__________________
Email : http://scr.im/waldar |
||
|
10
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : octobre 2010 Messages : 14 ![]() |
ok merci beaucoup, je testerai cela ! Il fallait voir le coup de la jointure INNER ^^. par contre à quoi correspond du coup ma première requête ?! Ne donne-t-elle pas le même résultat (avec un contre-exemple à l'appui)? ok ok c'est à moi de réfléchir mais bon ! PS: je code en C++ des méthodes de chargement des données, et le SQL je connais moins!
|
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() Jérémy Étudiant Inscription : octobre 2009 Messages : 236 ![]() |
Juste en optimisation mais,
Code :
Code :
WHERE value_date BETWEEN '01/01/2009' AND '01/01/2010' |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com