2016-07-16 10 views
0

同じ問合せの別の表の値に基づいて1つの表から選択することができるかどうか質問があります。私の場合は、followscoreの2つのテーブルがあります。別の表の値に基づいて1つの表から選択

フォロー

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

私は共犯するトラインよ何

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

スコア最初のユーザーがフォローしている人を取得し、そのユーザーの合計スコアを取得することです。私はインナーに参加しようとしましたが、動作させることはできません。あなたはおそらく、あなたのクエリの最後に、ここにGROUP BY句を含める必要が

クエリ

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

答えて

1

この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)のようなスコアFROM f、スコアs WHERE f.following = s.username GROUP BY s.username'?ここでは[Fiddle](http://sqlfiddle.com/#!9/e655d3/14)の例があります。 – Supersnake

0

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.b.scoreを選択し、スコアbの内部結合に従います。ここで、b.username = a。次のグループはaによって定義されます。 – Pirate

関連する問題