Использование mysql формулы вместо php кода.
Добавлено: 14 сен 2021, 09:52
Доброе утро, знатоки!
Есть следующий php код, который сохраняет значение в БД, т.к. его нужно использовать дальше. Он должен быть динамическим, потому-что использует значение из другой сущности.
Нет ли возможности сделать это как-то через mysql формулу, чтобы можно было подсчитывать сумму в списке?
Что делает код:
Он берёт из дочерней сущности сумму произведенных товаров и сравнивает, если количество меньше 50 - берёт базовую цену, если меньше 300 - цену от 50 пар и так дальше. И умножает количество произведенных на цену.
Вопрос. Как можно сделать такое через mysql формулу или запрос, чтобы можно было высчитывать сумму в списке и дописать суффикс " грн" в конце???
Код выше для отображения на странице заказа.
Код ниже, служебный для расчетов в другую сущность
Есть следующий php код, который сохраняет значение в БД, т.к. его нужно использовать дальше. Он должен быть динамическим, потому-что использует значение из другой сущности.
Нет ли возможности сделать это как-то через mysql формулу, чтобы можно было подсчитывать сумму в списке?
Что делает код:
Он берёт из дочерней сущности сумму произведенных товаров и сравнивает, если количество меньше 50 - берёт базовую цену, если меньше 300 - цену от 50 пар и так дальше. И умножает количество произведенных на цену.
Вопрос. Как можно сделать такое через mysql формулу или запрос, чтобы можно было высчитывать сумму в списке и дописать суффикс " грн" в конце???
Код: Выделить всё
$done_sql = db_query('SELECT SUM(field_248) as `acts_sum` FROM app_entity_28 WHERE app_entity_28.parent_item_id =' . [id]);
$current_sql = db_query('SELECT field_315 FROM app_entity_26 WHERE id =' . [id]);
$current_result = db_fetch_array($current_sql);
$current_value = $current_result['acts_sum'];
$done_result = db_fetch_array($done_sql);
$done = $done_result['acts_sum'];
$amount = [235];
$base_cost = [236];
$fifty_cost = [298];
$three_cost = [353];
$thousand_cost = [354];
if ($amount >= 1000 and $thousand_cost != 0) {
$output_value = number_format(($done*$thousand_cost), 2, '.', '') . " грн";
} else if ($amount >= 300 and $three_cost != 0) {
$output_value = number_format(($done*$three_cost), 2, '.', '') . " грн";
} else if ($amount >= 50 and $fifty_cost != 0) {
$output_value = number_format(($done*$fifty_cost), 2, '.', '') . " грн";
} else {
$output_value = number_format(($done*$base_cost), 2, '.', '') . " грн";
}
Код выше для отображения на странице заказа.
Код ниже, служебный для расчетов в другую сущность
Код: Выделить всё
$done_sql = db_query('SELECT SUM(field_248) as `acts_sum` FROM app_entity_28 WHERE app_entity_28.parent_item_id =' . [id]);
$current_sql = db_query('SELECT field_315 FROM app_entity_26 WHERE id =' . [id]);
$current_result = db_fetch_array($current_sql);
$current_value = $current_result['acts_sum'];
$done_result = db_fetch_array($done_sql);
$done = $done_result['acts_sum'];
$amount = [235];
$base_cost = [236];
$fifty_cost = [298];
$three_cost = [353];
$thousand_cost = [354];
if ($amount >= 1000 and $thousand_cost != 0) {
$output_value = $done*$thousand_cost;
} else if ($amount >= 300 and $three_cost != 0) {
$output_value = $done*$three_cost;
} else if ($amount >= 50 and $fifty_cost != 0) {
$output_value = $done*$fifty_cost;
} else {
$output_value = $done*$base_cost;
}
if ($output_value != $current_value) {
db_query('UPDATE app_entity_26 SET field_315 = ' . $output_value . ' WHERE id = ' . [id]);
}