我正在尝试加入三个表。
第一个表transactions
包含学生获得的“积分”的详细信息。这里的相关字段是Recipient_ID
(学生获得分数)。
第二个表purchases
包含学生购买的“奖励”的详细信息。这里的相关字段是Student_ID
和Reward_ID
。
最终表格rewards
详细说明了购买的奖励。这里的相关字段是Reward_ID
,Cost_to_User
(学生为用于订购该GROUP_CONCAT
功能的每个奖励支付的价格)和Title
。
我正在使用的查询如下:
SELECT
t.Recipient_ID AS `ID` ,
SUM( t.Points ) AS `Points Earned`,
SUBSTRING_INDEX( GROUP_CONCAT(DISTINCT r.Title ORDER BY r.Cost_to_User DESC SEPARATOR ', '),', ',3 ) AS `Rewards`
FROM `transactions` t
LEFT JOIN `purchases` p
ON t.Recipient_ID = p.Student_ID
LEFT JOIN `rewards` r
ON p.Reward_ID = r.Reward_ID
WHERE t.`Recipient_ID`
IN ( 90128, 90163, 33888, 34240, 137674 )
GROUP BY t.`Recipient_ID`
由于某种原因,Points Earned
输出非常错误。如果我删除LEFT JOIN
on purchases
,Points Earned
输出是正确的。
是什么让我的SUM
命令发疯了?
编辑:请注意,我需要这些LEFT JOIN
命令,因为我想显示所有学生,包括那些没有购买任何东西的学生。在这篇文章中找到了更多细节。
提前致谢,