2011-02-03 16 views
0

私はこれをやっている順序が間違っていると確信しています。私は最終的に進値引き額を乗じ価格と数量プラス100で割っ税によって価格と数量を乗じています割引計算が間違っています

(`p`.`price`*`op`.`quantity`) * ((`p`.`tax_state`+`p`.`tax_fed`)/100) + (`p`.`price`*`op`.`quantity`) * `op`.`discount` as totaldisc, 

:私は、次の計算を持っています。私が電卓でこれを行うと、私は正しい割引が得られますが、SQLで、私は数ドルでオフです。

+1

なぜMySQLを使用して数学を行っていますか?それを通常のコードに任せてください。 –

答えて

0

私はオペレータの優先順位の問題だと思います。これを試してみてください:MySQLのドキュメントサイトから

(
    (`p`.`price`*`op`.`quantity`) * 
    ((`p`.`tax_state`+`p`.`tax_fed`)/100) + 
    (`p`.`price`*`op`.`quantity`) 
) * `op`.`discount` as totaldisc, 

は抜粋:

で一緒にラインを示している演算子は同じ優先順位を持っています。 INTERVAL BINARY、COLLATE!
- (単項マイナス)、〜(単項ビット反転)^
*、/、DIV、%、MOD
- 、+ < <、>> & |
=(比較)、< =>、> =、>、< =、<、<>、!=、LIKE、REGEXP IS、その間に、
CASE、WHEN、THEN、ELSEませ& &、AND XOR
||、OR
=(代入):=

演算子の優先順位のチェックの詳細については:

http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

+0

ありがとうCyber​​mate。私は今そのショットを与えるでしょう。 – jim

+0

はい。それはうまくいきました。ありがとうございました。優先順位の決定方法を教えていただけますか?私は自分自身のためにこれを推論することができる必要があり、かなり正直言って、私はそれではよく分かりません。 – jim

+0

このポストをいくつかの情報とリンクで更新しました。 – Chandu

0

合計価格((価格*数量)+((価格*数量)+税金/ 100))または税金なしの単価で割り引いていますか?

あなたは価格*数量に割引を提供している場合、その問題はありそうブラケット((pprice * opquantity)*((p。+ ptax_statetax_fed)/ dicount

の前に配置する必要があります100)+(pprice * opquantity))* opdiscount(合計ディスク数)、

関連する問題