繁体   English   中英

我正在尝试加入其中一个表中不存在用户记录的表

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM