我有三个表加入与资金三个表和统计
[网友]
id
name
email
[交易]
id
user_id
amount
points_rewarded
[赎回]
id
user_id
points_redeemed
我想查询数据库获取以下字段
users.id
users.name
transactions // Number of transactions
redemptions // Number of redemptions
points // Sum of points_rewarded - sum of points_redeemed
我能设法加入用户表,无论是交易或赎回,但我似乎无法参加全部三个在一个查询。
[用户+交易]
SELECT users.id,users.name,COUNT(transactions.id) AS transactions,SUM(transactions.points_rewarded) AS points_rewarded FROM users LEFT JOIN transactions ON users.id=transactions.user_id GROUP BY users.id, users.name
其中给出了users.id,users.name,交易和points_rewarded正确的价值观。
[用户+赎回]
SELECT users.id,users.name,COUNT(redemptions.id) AS redemptions, IFNULL(SUM(redemptions.points_redeemed),0) AS points_redeemed FROM users LEFT JOIN redemptions ON users.id=redemptions.user_id GROUP BY users.id, users.name
其中给出了users.id,users.name,赎回正确的价值观和points_redeemed。
如果我只是左连接都使用
SELECT users.id,users.name,COUNT(transactions.id) AS transactions,COUNT(redemptions.id) AS redemptions,SUM(transactions.points_rewarded) - IFNULL(SUM(redemptions.points_redeemed),0) AS points FROM users LEFT JOIN transactions ON users.id=transactions.user_id LEFT JOIN redemptions on users.id=redemptions.user_id GROUP BY users.id, users.name
我得到的赎回列错误的价值观。我基本上获得了所有points_rewarded值乘以使得points(points_rewarded - points_redeemed)为负值的赎回总数,这是不可能的。
任何帮助将是伟大的!