我需要計算標題。所以我有包含交易記錄的表 A 和包含交易狀態的表 B。我想累積資料以顯示基于表 B 的表 A 結果計數。但目前我仍然無法獲得空資料。
我在
從上圖中可以看出,TSID: 4 (Complete) 的狀態未列出為零。
我嘗試了一些腳本
SELECT
COUNT(CASE WHEN A.Status = 0 THEN 1 END) AS Pending,
COUNT(CASE WHEN A.Status = 1 THEN 1 END) AS Assigned,
COUNT(CASE WHEN A.Status = 2 THEN 1 END) AS Started,
.
.
.
.
但我不想要這種方式,因為在客戶端上,我使用回圈并根據 SQL 回傳的結果呈現顯示。
我已經嘗試LEFT JOIN, LEFT OUTER JOIN但沒有達到預期的結果。坦率地說,我不太擅長 SQL 連接部分。
uj5u.com熱心網友回復:
您需要 a LEFT JOIN,但必須翻轉表格的順序
SELECT
TS.TSID,
TS.TSName,
COUNT(T.Status) as Total
FROM B TS
LEFT JOIN A T ON T.Status = TS.TSID
GROUP BY
TS.TSID,
TS.TSName
ORDER BY
TS.TSID ASC;
SQL小提琴
您也可以RIGHT JOIN使用原始順序執行此操作,但這可能會導致混淆,尤其是在存在其他連接的情況下。而且因為連接是可交換的,你可以交換它們。這就是為什么在實踐中很少使用右連接的原因。
另請注意,分組已結束
TS.TSID,因為T.Status在某些情況下可能為空。
uj5u.com熱心網友回復:
當你想要連接第二張表中的所有記錄時,即使你需要的第一張表中沒有匹配RIGHT JOIN。我也洗掉MAX(T.status)了,ORDER BY因為它不會產生你想要的結果。
SELECT TS.TSID,TS.TSName,
COUNT(T.Status) as Total
FROM A T
RIGHT JOIN B TS
ON Status=TS.TSID
GROUP BY T.Status,
TS.TSID,TS.TSName
ORDER BY
MAX(TS.TSID) ASC;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/430431.html
上一篇:CORS策略已阻止從源“http://localhost:63342”訪問“http://localhost:8000/api/auth/jwt/create/”處的XMLHttpRequest:
