繁体   English   中英

如何修复此 SQL 查询 (MariaDB) 以生成正确的 output?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM