2016-07-16 87 views
0

我有一个问题,如果可以从同一个查询中的另一个表值中选择一个表。在我的情况下,我有两个表名为followscore根据另一个表中的值从一个表中选择值

关注

------------------------ 
| follower | following | 
------------------------ 
| Uname2 | Uname1 | 
------------------------ 

分数

-------------------- 
| username | score | 
-------------------- 
| Uname1 | 1 | 
-------------------- 
| Uname1 | 2 | 
-------------------- 

什么我试着帮凶是先获得用户跟随谁,然后让用户总成绩。我尝试过内连接等,但不能得到它的工作。

查询

"SELECT follow.following, score.SUM('score') FROM follow INNER JOIN score ON follow.following=score.username WHERE follow.follower='Uname2'"; 

回答

1

为了得到一个记录使用本:

SELECT 
    f.following, 
    SUM(s.score) as score 
FROM 
    Follow f, Score s 
WHERE 
    f.following = s.username 
    AND f.follower = 'Uname2' 

要得到总和为每个尝试:

SELECT 
    f.follower, 
    f.following, 
    SUM(s.score) as score 
FROM 
    Follow f, Score s 
WHERE 
    f.following = s.username 
GROUP BY f.follower 

这里有一个Fiddle例子。

+0

谢谢我现在可以得到一个用户结果!如何更改查询以便打印出每个用户和特定用户所遵循的分数? – mattesj

+1

也许类似于'SELECT s.username,f.follower,SUM(s.score)as score FROM f,Score s WHERE f.following = s.username GROUP BY s.username'?这是[Fiddle](http://sqlfiddle.com/#!9/e655d3/14)示例。 – Supersnake

0

你可能需要包括GROUP BY条款这里,在您的查询的末尾添加GROUP BY follow.following

0

使用GROUP BY这样子。希望它会有所帮助。

SELECT follow.following, score.SUM('score') FROM follow INNER JOIN score ON follow.following=score.username WHERE follow.follower='Uname2' GROUP BY follow.following 
+0

我已经尝试与群但不起作用。 – mattesj

+0

试试这个。选择a.following,总和(b.score)跟随内部连接b分数b.username = a.following组a.following – Pirate

相关问题