Simplification du requête SQL
squall6969
Messages postés
4
Statut
Membre
-
Christounet Messages postés 1266 Statut Membre -
Christounet Messages postés 1266 Statut Membre -
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
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
A voir également:
- Simplification du requête SQL
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Sql (+) - Forum Programmation
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql lister les tables ✓ - Forum Programmation
3 réponses
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à...
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à...
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
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
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
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