Bonjour,

J'ai une table historiques qui comporte les champs suivants:
- Date
- Devise1
- Devise2
- Valeur

Je voudrais sélectionner les historiques selon un couple de devises.
Si la valeur du couple de devises n'existe pas, alors j'aimerais faire une division par deux autres couples de devises en cherchant une devise 'pivot'.
Par exemple :
Ma table contient tous les historiques
Date_V|Devise1|Devise2|Valeur
2008-05-01|EUR|USD|1.5000
2008-05-01|EUR|JPY|100
2008-05-01|EUR|CAD|2
Je peux donc sélectionner les valeurs pour EUR/USD.
En revanche, il faut que je divise la valeur de EUR/CAD par EUR/USD pour obtenir USD/CAD (l'EUR etant ma devise pivot).

Il faudrait que ma requete fasse:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT Date_V, @d1:='USD', @d2:='CAD', @d3:='EUR', 
IF(
@val:=(SELECT valeur FROM historiques h1 WHERE Devise1=@d1 AND Devise2=@d2 AND h1.Date_V=h.Date_V), 
@val, 
((SELECT valeur FROM historiques h2 WHERE Devise1=@d3 AND Devise2=@d2 AND h2.Date_V=h.Date_V))/((SELECT valeur FROM historiques h3 WHERE Devise1=@d3 AND Devise2=@d1 AND h3.Date_V=h.Date_V))
) as valeur
FROM historiques
WHERE Date_V='2008-05-01' GROUP BY Date_V

Le probleme est que cela n'est pas fait correctement.
Savez-vous comment je peux optimiser ma requete pour qu'il trouve automatiquement "@d3" et calcule la valeur ?

Merci infiniment pour vos réponses !
A bientot !