2016-07-16 133 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

相關問題