На данный момент я написал функцию, чтобы проверить, полностью ли оплачен заказ. В функции вторая функция используется для определения общей цены заказа. В первой функции общая стоимость заказа сравнивается со всеми транзакциями заказа, и на основании этого заказ оплачивается или нет.Сделать запрос от функции
Нижеперечисленные функции. Я ищу способ, которым я могу изменить функцию на один запрос. Кое-что вроде:
SELECT *
FROM order
WHERE
((Grandtotal - TransactionTotal) <= 0)
Так что запрос возвращает, например, true, если оплачен, false, если не оплачен.
функция IsOrderPaid:
function IsOrderPaid($order_id){
$returnvalue = false;
$ordertotal = CalculateOrderTotal($order_id);
$sql = "SELECT SUM(amount) AS TransactionTotal FROM order_transaction WHERE order_id='".mysql_real_escape_string($order_id)."' AND status='9'";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($result);
if(($ordertotal - $row->TransactionTotal) <= 0){
$returnvalue = true;
}
return $returnvalue;
}
несильно CalculateOrderTotal
function CalculateOrderTotal($order_id){
$sql = "SELECT
order_id, SUM(total) GrandTotal
FROM
(
SELECT ordering_id AS order_id, SUM(price * quantity) AS total
FROM order_products
WHERE order_id = ".mysql_real_escape_string($order_id)."
UNION ALL
SELECT ordering_id AS order_id, SUM(price * quantity * -1) AS total
FROM rma_products
WHERE bestelling_id = ".mysql_real_escape_string($order_id)."
UNION ALL
SELECT order_id, amount AS total
FROM order_shipping
WHERE order_id = ".mysql_real_escape_string($order_id)."
UNION ALL
SELECT order_id, amount AS total
FROM order_service
WHERE order_id = ".mysql_real_escape_string($order_id)."
UNION ALL
SELECT order_id, SUM(amount * -1) AS total
FROM order_gift
WHERE order_id = ".mysql_real_escape_string($order_id)."
)subTable
WHERE order_id <> 0
GROUP BY order_id";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($result);
return $row->GrandTotal;
}
Я знаю mysql_*
осуждается, но это следующий вопрос.
Почему бы вам не сделать две функции mysql и использовать их – user991554
Окончательный Я хочу использовать результат этого запроса в другом запросе. Теперь я выполняю свой первый запрос, в то время как я делаю вызов функции. Исходя из результата, я заполняю массив всеми заказами, которые мне нужны. – Timo002