簡體   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