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