![](/img/trans.png)
[英]Using MySQL to return results using LEFT JOIN where one of the tables does not contain a record
[英]I am trying to join tables where a user record does not exist in one of the tables
我有一個帶有贈款和購買表的獎勵計划。 我正在嘗試創建一個顯示用戶余額的報告。 但是,如果用戶尚未購買,余額報告將不包含他們的記錄。 該報告僅包含已獲得贈款並至少進行過一次購買的用戶。
使用的第三個表是我們的用戶記錄表,用於拉入用戶記錄。
有沒有辦法將購買表中的無記錄視為“0”余額?
您不能為每個余額為 0 的用戶設置一個條目嗎? 這就是這行不通的原因。 您要求數據庫加入/顯示不存在的內容。
如果沒有加入,您可以將任何記錄顯示為 0,但您將無法創建一個無任何連接,因此我建議您在購買平板電腦中為每個用戶(創建用戶帳戶時)添加一個條目,余額為 0 .
希望這可以幫助
這樣的事情應該工作:
CASE WHEN (SELECT COUNT(*) FROM purchases WHERE purchase_user_id = user_id) > 0
THEN balance_value
ELSE 0
END as balance
編輯:根據您添加的查詢,我認為您可以在執行SUM()
之前將金額COALESCE
為 0 。 如果購買表中沒有記錄,這應該可以防止返回 NULL 值。
SELECT ce.platform_id,
SUM(COALESCE(p.amount, 0))
FROM current_eligibility ce
LEFT JOIN purchases p ON p.platformId = ce.platform_id
WHERE p.currency = 'X123' AND
ce.platform_id = 'X2334'
GROUP BY ce.platform_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.