Bonjour,

le titre est assez bizarre mais je ne sais pas comment expliquer en quelques mots mon problème. Je vous détaille donc la situation.

Je suis sur une base MySQL.
Dans cette base, j'ai une vue paramétrée qui s'appelle qnt_live_param. Le paramètre de ma vue est d() qui correspond a une date.
Cette vue a différent champs dont le champs qnt_live_trade.

En fonction de la valeur de d(), la valeur de qnt_live_trade peut varier. (qnt_live_trade correspond à la quantité que j'ai dans un portefeuille).
Par exemple: j'achete 100 à une date d1. je vend 50 à une date d2.
Si je regarde qnt_live_param à la date d1, j'aurai la valeur de qnt_live_trade=100, si je regarde qnt_live_param à la date d2 j'aurai du coup qnt_live_trade = 50.

Ce que je souhaite c'est faire une requete qui me donne quelque chose du genre:
d1 : 100
d2 : 50

En pratique, je procède de la sorte:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
select @d:=20131003.235959;
 
select qlp.qnt_live_trade from qnt_live_param as qlp where qlp.trade_dt=20131003 and qlp.trade_id =10;
Dans mon cas particulier, le résultat de la 2eme requete est 8200.

Maintenant, je veux faire une boucle sur les dates ou une action s'est passée sur mon portefeuille pour connaitre à chaque date la quantité que j'avais dans le portefeuille.
J'ai écrit le bout de code suivant:
la table date me permet d'avoir la série de date ou il y a eu un mouvement pour le trade 10.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select tall.trade_id, tall.trade_dt, (select @d:=concat(tall.trade_dt,'.235959')) , d(),
 
(select qlp.qnt_live_trade from qnt_live_param as qlp where qlp.trade_dt=tall.trade_dt and qlp.trade_id =10) as 'Capital'
 
from date as tall
 
where tall.trade_id =10
Le problème est que le résultat est:

10 20130925 20130925.235959 20130925.235959 81900
10 20131003 20131003.235959 20131003.235959 NULL

La première ligne est OK et me rend la bonne valeur. J'ai bien une quantité de 81900 à la date du 25 09 2013.
En revanche, la 2eme ligne me rend NULL (et les suivantes aussi) au lieu de me renvoyer 8200.

Je soupçonne le paramètre d() de ne pas être passé à ma vue paramétrique en fonction de la ligne mais je ne sais pas comment le savoir!

J'espère avoir été suffisamment clair!

Merci pour votre aide.