私は今、私が持っているこのSUMクエリの解決策を見つけようとして何年も費やしてきました:
SELECT o.id, o.ordernr, o.datetime, o.status, CONVERT(ROUND(o.shipping,2), CHAR(8)) AS shippingcosts,
u.id AS uid, u.name, u.surname, u.address, u.number, u.zipcode, u.country, u.email,
GROUP_CONCAT(CONVERT(op.amount, CHAR(8))) AS amount,
GROUP_CONCAT(CONVERT(ROUND(op.pprice,2), CHAR(8))) AS pprice,
IF(
u.country!= 'NL',
ROUND(SUM(
CASE
WHEN op.discount > 0 THEN ((op.amount * op.pprice) - ((op.amount * op.pprice) * (op.discount/100)))
WHEN op.discountf > 0 THEN ((op.amount * op.pprice) - ((op.amount * op.pprice) * (op.discountf/100)))
WHEN op.discountf = 0 && op.discount = 0 THEN (op.amount * op.pprice)
END
) + o.shipping,2),
ROUND((SUM(
CASE
WHEN op.discount > 0 THEN ((op.amount * op.pprice) - ((op.amount * op.pprice) * (op.discount/100)))
WHEN op.discountf > 0 THEN ((op.amount * op.pprice) - ((op.amount * op.pprice) * (op.discountf/100)))
WHEN op.discountf = 0 && op.discount = 0 THEN ((op.amount * op.pprice)*1.19)
END
)*1.19) + o.shipping,2)
) AS total,
GROUP_CONCAT(CONVERT(p.id, CHAR(8))) AS pid,
SUM(p.weight) AS weight,
FROM orders AS o
INNER JOIN users AS u ON o.uid = u.id
INNER JOIN order_products AS op ON op.oid = o.id
INNER JOIN products AS p ON op.pid = p.id
GROUP BY o.id
私が達成しようとしているのは、op.discount が null でない場合、または op.discountf が null でない場合、および op.discount と op.discountf の両方が null である行ごとに、各行の合計を取得することです...
この時点で、mysql は代わりにすべての合計を合計しているようです..??
誰か手を貸してくれませんか??
事前にthnx(たくさん)