![](/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.