Classement selon le champ 'prix', mais en tenant compte du champ 'devise'

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 - 5 janv. 2009 à 10:40
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 - 5 janv. 2009 à 15:38
Bonjour,

Alors voilà, j'ai un classement de produits à faire selon le prix de ceux-ci. Le problème c'est qu'ils ne sont pas tous entrés dans la même devise. Lors du classement il faut que je tienne compte du taux de change actuel.

Admettons que le taux de change soit déjà récupéré, comment je peux faire ma requête au niveau du ORDER BY  ?

SELECT * FROM produits ORDER BY (prix*taux1) SI devise=devise1 OU (prix*taux2) SI devise=devise2 OU (prix*taux3) SI devise=devise3;

Si quelqu'un pouvait m'éclairer, ça m'éviterait de chercher trop longtemps sans certitude de trouver un jour ;)

@+! Samy

6 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2009 à 11:40
Salut

Regardes du coté des IF et des CASE

cf : http://dev.mysql.com/doc/refman/5.0/fr/control-flow-functions.html
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
5 janv. 2009 à 11:53
Ca fait plusieurs jours que je cherche et comme d'habitude à peine posté mon message sur un forum je trouve une solution. Si ça peut en aider d'autres :

SELECT prix1/1.4 AS prix_EUR
FROM produits
WHERE (((produits.devise)='usd'))

UNION SELECT prix1*35/1.4 AS prix_EUR
FROM produits
WHERE (((produits.devise)='dop'))

UNION SELECT prix1 AS prix_EUR
FROM produits
WHERE (((produits.devise)='eur'))

ORDER BY prix_EUR;

=> si vous avez une meilleure syntaxe, je reste ouvert à toute proposition

Et si par le plus grand des hasards quelqu'un savait commun récupérer les taux de change USD/DOP, je prends aussi ! Pour le EUR/USD y'a un script sur le site de la BCE avec un taux actualisé une fois par jour (si vous avez mieux, je prends aussi).

@+! Samy
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2009 à 12:30
Salut

Regardes
le service web suivant
http://www.webservicex.net/CurrencyConvertor.asmx
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
5 janv. 2009 à 15:02
Merci !

C'est pas mal du tout d'avoir du temps réel, par contre c'est un peu lent. J'vais essayer de mettre ça dans un SWF pour que mon site se charge en même temps et que le SWF fasse l'enregistrement des taux dans la BDD en arrière-plan.

Tu crois que c'est une bonne façon de faire ?

@+! Samy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 janv. 2009 à 15:23
Tu peux faire un cache et lancé un bat tous les jours par exemple ou toutes les semaines
et enregistré dans un fichier texte (xml) ou une BDD les valeurs

les taches planifiées de nt peuvent le faire
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
5 janv. 2009 à 15:38
J'suis sur un hébergement plutôt basique sur ce projet. Pas de serveur dédié pour configurer la tâche planifiée.

Donc j'pense que j'vais faire une table avec les champs "date_heure" et "tauxUSD_EUR" et "tauxUSD_DOP" et mon SWF va appeler un fichier PHP vérifiant si l'ancienneté de la mise à jour est supérieure à 2h par exemple qu'il fasse la requête vers le webservice puis la mise à jour de la table.

...reste plus qu'à faire ! ;)

Merci pour tous les conseils en tout cas.

@+! Samy
0
Rejoignez-nous