Не видя пример данных, мы не сможем узнать, почему итоговые данные вашего запроса получаются иначе, чем когда вы выполняете математику вручную. Это может быть плохое соединение, поэтому вы получаете больше / меньше записей, чем ожидали. Также возможно, что ваши расчеты выключены. Выберите пример с наименьшим количеством связанных записей и сравните.
Я предлагаю добавить GROUP BY
к запросу:
SELECT SUM(p.cost * wp.qty) as total_score
FROM part2vendor p
JOIN wo_parts wp ON wp.pn = p.pn
WHERE workorder = $workorder
GROUP BY workorder
К вашему сведению: MySQL был предназначен для обеспечения гибкости в GROUP BY
, в то время как никакой другой БД, который я использовал, не дает - это источник многочисленных вопросов по SO "почему это работает в MySQL, когда он не работает на БД х ... ".
Чтобы убедиться, что ваши количества верны:
SELECT wp.qty,
p.cost
FROM WO_PARTS wp
JOIN PART2VENDOR p ON p.pn = wp.pn
WHERE p.workorder = $workorder
Убедитесь, что цифры верны для данного заказа.