我確定我在做這件事的順序是錯誤的。我有以下的計算:折扣計算不正確
(`p`.`price`*`op`.`quantity`) * ((`p`.`tax_state`+`p`.`tax_fed`)/100) + (`p`.`price`*`op`.`quantity`) * `op`.`discount` as totaldisc,
我乘上稅100再加上價格和數量,然後最後由小數折扣金額乘以分爲價格和數量。當我用計算器做這件事時,我得到了正確的折扣,但是用SQL,我得到了幾美元。
我確定我在做這件事的順序是錯誤的。我有以下的計算:折扣計算不正確
(`p`.`price`*`op`.`quantity`) * ((`p`.`tax_state`+`p`.`tax_fed`)/100) + (`p`.`price`*`op`.`quantity`) * `op`.`discount` as totaldisc,
我乘上稅100再加上價格和數量,然後最後由小數折扣金額乘以分爲價格和數量。當我用計算器做這件事時,我得到了正確的折扣,但是用SQL,我得到了幾美元。
我認爲它與運算符優先級有關。試試這個:從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
- ,+ < <,>> & |
=(比較),< =>,> =,>,< =,<,<>,!=,IS,LIKE,REGEXP之間,
情況下,當,THEN,ELSE NOT & &,AND XOR
||,OR
=(賦值),:=
有關運算符優先檢查的更多信息:
http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html
感謝Cybermate。我現在就給一個鏡頭。 – jim 2011-02-03 16:58:14
您是否給予總價((價格*數量)+((價格*數量)+稅費/ 100))的折扣或只是在沒有稅收的價格上?
如果您提供的價格*數量的優惠,那麼它是好的,否則支架必須dicount
((p
之前。price
* op
。quantity
)*((p
。tax_state
+ p
。tax_fed
)/ 100)+(p
。price
* op
.))* op
。 discount
as totaldisc,
你爲什麼用MySQL做數學?將其留給常規代碼。 – 2011-02-03 16:53:46