Simplification du requête SQL

Fermé
squall6969 Messages postés 4 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 09:57
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 31 juil. 2008 à 12:01
Bonjour,


je voudrais simplifier ce bout de requête en reprenant la valeur de stotalttc comme condition dans le IF mais cela ne semble pas fonctionner.
Comment faut il faire pour se resservir d'une variable créer avec un AS ?

$sql.=", SUM(IF(commande_produit_attribut_id IS NULL, produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2), produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2))) AS stotal_ttc";
$sql.=", SUM(IF(commande_produit_attribut_id IS NULL, produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2), produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2)))+ IF(SUM(IF(commande_produit_attribut_id IS NULL, produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2), produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2)))<70, ROUND(commande_port_ht * (1 + commande_port_taxe),2),0) AS total_ttc";


MERCI

3 réponses

cameleon33 Messages postés 635 Date d'inscription mardi 8 juillet 2008 Statut Membre Dernière intervention 26 février 2010 50
31 juil. 2008 à 10:03
Bonjour,

En SQL, on n'utilise pas IF il me semble... mais plutôt, IIF
Essai en remplaçant des IF par des IIF déjà...
1
squall6969 Messages postés 4 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 10:31
Salut,
merci pour ta réponse mais le problème ne vient pas de la, le IF tout simple marche bien,
Le problème vient du fait que je ne sais pas comment rentrer le stotal_ttc dans une variable pour le réutilisé comme condition du IF tel que:

IF(stotal_ttc<70,ROUND(commande_port_ht * (1 + commande_port_taxe),2),0)

MERCI
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 388
31 juil. 2008 à 12:01
Bonjour,

Si je comprends bien ton ordre SQL, tu veux dans une colonne avoir un sous-total ttc et dans une deuxième colonne un total ttc qui en fait est égal au sous-total ttc + un certain montant si le sous-total est inférieur à 70.
J'ai alors deux petites questions:
1) Quelle base de données utilises-tu ?
2) Dans ton IF que la variable commande_produit_attribut_id soit NULL ou pas , tu calcule exactement la même chose produit_quantite * ROUND(produit_prix * (1 + produit_taxe),2), c'est voulu ou bien c'est une faute de frappe ?

A plus
0