【发布时间】:2015-12-06 17:43:54
【问题描述】:
我这里有两张桌子。
-
log(代表日志) -
act(代表行动)
日志
包含列:logid、userid、actid
行动
包含列:actid、amount
Amount 表示当相应的actid 插入日志 (log) 时用户 (userid) 收到的点数(例如 700 中的 50 或 5)。
我想要实现的是,当您搜索 userid 1 时,选择 log 中的所有行,其中 userid = 1 被选中。然后,从这些选定的log-rows 中,actids 应在表act 中查找,amounts 应相加。
简而言之:
选择
log-rows 其中userid = 1从这些行中取出所有
actids在
act表中找到匹配的amount总结所有这些
amounts
我从这个查询开始:
SELECT log.logid, log.userid, log.actid, act.actid, act.amount
FROM log
JOIN act
ON act.actid = log.actid
WHERE log.userid = '1'
这给了我一张桌子(除其他外)
用户名 |金额
---1----|--20---
---1----|--40---
---1----|---5---
---1----|--10---
现在我想sum所有这些金额并回显总数,但遗憾的是我找不到对此有效的查询。
编辑:
我使用火影忍者提供给我的查询来汇总这些金额。这现在就像一个魅力!查询:
SELECT log.userid, sum(act.amount) FROM log JOIN act ON act.actid = log.actid WHERE log.userid = '1'
接下来我要尝试的是不仅从userid = 1 的用户那里获取总和,还从user 表中的其他用户那里获取总和。之后,我想在以下查询中使用这些总和:
$result = $mysqli->query("SELECT * FROM `db`.`user` ORDER BY `summed_amount` DESC");
其中summed_amount是火影忍者查询产生的总和。
【问题讨论】:
-
您的更新是一个单独的问题,但它是重复的。 Check this question/answer