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



我有一个奖励计划,有赠款和购买表。我正在尝试创建一个显示用户余额的报告。但是,如果用户尚未进行购买,则余额报告不包含其记录。该报告仅包含已获得资助并至少进行过一次购买的用户。

使用的第三个表是我们的用户记录表,用于拉入用户记录。

有没有办法将购买表中的无记录视为"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

最新更新