MySQL将select与其他表中的sum结合起来

MySQL combine select with sum from other table(MySQL将select与其他表中的sum结合起来)
本文介绍了MySQL将select与其他表中的sum结合起来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不是很喜欢 MySQL,但我只需要一个声明,我非常感谢您在这方面的帮助.

i'm not really much into MySQL, but i need just one statement and I would really appreciate your help on this.

我有两个表:'user' 和 'score'

I have two tables: 'user' and 'score'

这是用户"的结构:

| user_id | user_name |
| 1       | Paul      |
| 2       | Peter     |

这是'score'的结构:

here's the structure of 'score':

| score_id | score_user_id | score_track_id | score_points | 
| 1        | 2             | 23             | 200          |
| 2        | 2             | 25             | 150          |

现在我需要一个能够为我提供某种高分列表的查询.结果应包含 user_id、user_name 和与用户相关的所有分数的总和:我应该如下所示:

now I need a query that provides me some kind of highscore-list. the result should contain user_id, user_name and the sum of all scores that are related to the user: i should look like this:

| user_id | user_name | scores |
| 1       | Paul      | 0      |
| 2       | Peter     | 350    |

如果将结果按照用户在全球排名中的位置排序,则更好:

even better would be, if the result would be sorted in order of the users position in the global ranking like this:

| position | user_id | user_name | scores |
| 1        | 2       | Peter     | 350    |
| 2        | 1       | Paul      | 0      |

我试过这个说法

SELECT user_id as current_user, user_name, SUM(SELECT score_points FROM score WHERE score_user_id = current_user) as ranking FROM user ORDER BY ranking DESC

这会导致语法错误.对我来说主要的问题是将'user'中的user_id连接到每行'score'中的score_user_id.

which results in a syntax error. the main problem for me is to connect the user_id from 'user' to the score_user_id in 'score' for each row.

非常感谢您的帮助

推荐答案

你只需要将你的分数按用户分组:

You just need to group your scores by user:

SELECT @p:=@p+1 AS position, t.*
FROM (
  SELECT   user.user_id,
           user.user_name,
           IFNULL(SUM(score.score_points),0) AS total_points
  FROM     user LEFT JOIN score ON user.user_id = score.score_user_id
  GROUP BY user.user_id
  ORDER BY total_points DESC
) AS t JOIN (SELECT @p:=0) AS initialisation

在 sqlfiddle 上查看它.

这篇关于MySQL将select与其他表中的sum结合起来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Convert JSON integers and floats to strings(将JSON整数和浮点数转换为字符串)
in php how do I use preg replace to turn a url into a tinyurl(在php中,如何使用preg替换将URL转换为TinyURL)
all day appointment for ics calendar file wont work(ICS日历文件的全天约会不起作用)
trim function is giving unexpected values php(Trim函数提供了意外的值php)
Basic PDO connection to MySQL(到MySQL的基本PDO连接)
PHP number_format returns 1.00(Php number_Format返回1.00)