2014-03-28 107 views
0

我有一个页面,显示了领先榜分数已在系统中,存储在我的数据库中注册的所有用户添加新的价值。MySQL的更新值与旧值

表1

Points_hisotry表:

| points_id || user_id(fk) || point_hist | 
|___________||_____________||____________| 
|  1 ||  10  || 100  | 
|___________||_____________||____________| 
|  2 ||  11  ||  30  | 
|___________||_____________||____________| 
|  3 ||  11  ||  70  | 
|___________||_____________||____________| 
|  4 ||  11  || 200  | 

表2

Users表:

| users_id || username || firstname || lastname || 
|__________||___________||____________||__________|| 
| 10 || alan1 || Alan || Smith || 
|__________||___________||____________||__________|| 
| 11 || Jaz12 || Jass || Hopal || 
|__________||___________||____________||__________|| 
| 12 || Shubs || shubs || hawash || 
|__________||___________||____________||__________|| 
| 13 || John || Rob  || engli || 

points_history表,我有3行与同users_id,我需要他们来概括,所以我最终与总Point_histusers_id应加起来300

我需要一个查询来帮我加入这些表格,然后将相同的users_id的行相加为一,然后在记分板上打印出来。

我已经试过很多的查询,但我还没有得到它的权利。

下面是我的一些PHP从leaderboard.php

$sql = "SELECT * FROM users, points_history WHERE users.users_id = points_history.users_id"; 
$user_query = mysqli_query($db_conx, $sql); 
    while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) { 
    $username = $row ["username"]; 
    $point_hist = $row["point_hist"]; 

上面的查询是打印出所有username的,从以上两个表自己的观点。

我是新来这个,所以我需要一些帮助,请。

回答

1

你可以使用SUM()来总结他们(谁曾想过),但是你需要告诉SQL通过GROUP BY哪些行可以相加,哪些不应该。

SELECT users.*, SUM(points_history.point_hist) AS total_points 
FROM users 
INNER JOIN points_history 
    ON users.users_id = points_history.users_id 
GROUP BY users_id 

应该做的伎俩

+0

上面的代码工作,但它让我对整个表给每个用户的total_points。而不是每个用户对每个用户的total_points。 @kingkero – user3443701

+0

我想我需要一个'WHERE'条件来声明WHERE users.users_id ='$ id'',但是我会如何将它添加到上面的查询中。 @kingkero – user3443701

+0

@ user3443701 Mhm在我的[小提琴](http://sqlfiddle.com/#!2/17964a/6)它的工作,也许尝试'GROUP BY points_history.users_id' – kero