[英]How do I fix this SQL query (MariaDB) to produce the correct output?
我一直在尝试从数据库中提取一些数据并生成正确的 output。 以下是我正在寻找的
id | ref_no | Order time | discount code | total | items | donations
到目前为止,这是我的 SQL 查询:
SELECT
order.id,
order.ref_no,
order.cdate AS "Order time",
order.promocode AS "discount code",
order.orig_total as "total",
GROUP_CONCAT(order_item_ref.item_id ORDER BY order_item_ref.item_id) AS "items",
(CASE WHEN order_item_ref.item_id = "99"
THEN order_item_ref.quantity ELSE "0" END) AS "donations"
FROM `order`
INNER JOIN `order_item_ref`
ON order.id = order_item_ref.order_id
WHERE order.deleted = "0"
GROUP BY order.id;
目前它并不完全有效。 如果订单不包含商品编号为 99 的商品或实际金额 (order_item_ref.quantity)(如果包含),则捐赠列应该显示 0。 但是,查询有时只能产生如下内容:
如果我删除 GROUP BY 和 GROUP CAT 部分,查询会按预期工作,但是我需要保持分组完整。
如何修复查询以使 output 正确?
编辑:第 48 行的 output 是正确的。 第 49 行的 output 不是。 根据上面的 SQL 查询,右侧列应该有一个非零数字,它应该来自 order_item_ref.quantity。
由于问题已重新打开,我可以发布自己的答案。 经过KIKO Software的解释,我正在寻找一种聚合方式(CASE WHEN order_item_ref.item_id = "99" THEN order_item_ref.quantity ELSE "0" END) AS "donations"
,发现我可以通过像这样简单地总结 output :
SUM((CASE WHEN order_item_ref.item_id = "99" THEN order_item_ref.quantity ELSE "0" END)) AS "donations"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.