2016-08-15 7 views
1

私は2つのテーブル​​とuser_sharesカウント一対多使用して左の参加は、ソーステーブルの上に間違ったカウントを与える

​​を持っています

id - pk 
platform - string 
country - string 
created_at - timestamp 

user_sharesがあります

id - pk 
user_result_id - integer 
created_at - timestamp 

この私の質問です:

select 
    count(user_results.id) as results, 
    count(user_shares.id) as shares, 
    user_results.platform as platform 
from 
    user_results 
left join 
    user_shares on user_results.id = user_shares.user_result_id 
group by 
    platform 

ここでスキーマと問題のクエリとSQLフィドルだ:「結果はせずに数える今 http://sqlfiddle.com/#!9/739a3/2

、あなたはフィドルに見ることができるように、私は(私は推測)1プラットフォームごとの結果が、resultsカウントを示しのみを持っていますシェア+シェア数 "

どうすればいいですか?結合テーブルは、その行を複製するので、あなたが必要なもの

+1

あなたの予想出力は何ですか? – 1000111

+0

彼は最初に問題があります: 'results'カラム –

+0

私はそれが1であるべきだと思います –

答えて

3

は、​​を数えることである。

select 
    count(distinct user_results.id) as results, 
    count(user_shares.id) as shares, 
    user_results.platform as platform 
from 
    user_results 
left join 
    user_shares on user_results.id = user_shares.user_result_id 
group by 
    platform 
+0

くそー!どのように私はそれを忘れましたか?ありがとうジョージ! – sUP

+1

これは時々起こる、np歓声;)) –