Учитывая, что налоговые ставки сохраняются в процентах, но скидка хранится в виде дроби (так много для последовательности!), И отмечая, что на самом деле обратные кавычки не является необходимым и очень нежелательно для удобства чтения, затем ...
(p.price * op.quantity) AS gross_price_exc_tax,
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed)/100)
AS gross_price_inc_tax,
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed)/100) *
(1 - op.discount) AS net_price_inc_tax,
...
это очень похоже на то, что вы написали, так что вы должны продемонстрировать, что у вас есть в качестве входных данных, а также то, что вы получаете в качестве результатов, и вы должны быть в состоянии объяснить, что вы ожидали в отличие от того, что вы получили. Есть ли какая-либо опасность, что MySQL обрабатывает часть выражения (выражений) как целое число, если вы ожидаете, что это значение с плавающей запятой?
Вы также должны делать то же, что и я, и создавать свой набор выражений по одной части за раз, анализируя результаты каждый раз. Это поможет быстрее найти проблемы. Например, я мог бы добавить:
(1 + (p.tax_state + p.tax_fed)/100) AS tax_multiplier
Если обнаружился как 1 вместо 1,125 или любой правильный дробь, то я знаю, чтобы рассмотреть это выражение, вероятно, добавление десятичной точки к двум параметрам.
Если вы хотите вычислить промежуточный итог без налога, почему ваша формула включает слова "tax_state" и "tax_fed"? – jmort253
Я хотел включить налог и скидки, а затем вернуть их, чтобы убедиться, что у меня есть правильные итоги. – Jim
«Скидка» хранится в номере ('25')? или фракции ('.75'). –