2016-09-26 15 views
1

に参加しました:MySQLの「グループ別では、」私は、次の結果を返し、それ以下のクエリを作成したクエリ

mysql> select u.username, s.campaignno, if(f.hometeamscore>f.awayteamscore,1,0) as Win, f.hometeamscore as Goals from straightred_fixture f, straightred_userselection s, auth_user u where s.fixtureid = f.fixtureid and s.teamselectionid = f.hometeamid and s.user_id = u.id union all 
    -> select u.username, s.campaignno, if(f.awayteamscore>f.hometeamscore,1,0) as Win, f.awayteamscore as Goals from straightred_fixture f, straightred_userselection s, auth_user u where s.fixtureid = f.fixtureid and s.teamselectionid = f.awayteamid and s.user_id = u.id; 
+------------+------------+-----+-------+ 
| username | campaignno | Win | Goals | 
+------------+------------+-----+-------+ 
| tingeyal | 34910256 | 1 |  5 | 
| shanu  | 35410256 | 1 |  4 | 
| tingeyal | 34910256 | 0 |  0 | 
| kOS  | 35210256 | 1 |  2 | 
| kOS  | 35210256 | 0 |  0 | 
| shanu  | 35410256 | 1 |  3 | 
| kriste8403 | 35510256 | 1 |  3 | 
| kriste8403 | 35510256 | 0 |  0 | 
+------------+------------+-----+-------+ 
8 rows in set (0.00 sec) 

はしかし、私は、各ユーザ名& campaignnoの組み合わせ合計するためだけの1行を戻したいの両方」 「勝利」欄と「目標」欄があります。上記の例では、次のクエリを返すクエリを使用したいと考えています:

+------------+------------+-----+-------+ 
| username | campaignno | Win | Goals | 
+------------+------------+-----+-------+ 
| tingeyal | 34910256 | 1 |  5 | 
| shanu  | 35410256 | 2 |  7 | 
| kOS  | 35210256 | 1 |  2 | 
| kriste8403 | 35510256 | 1 |  3 | 
+------------+------------+-----+-------+ 
4 rows in set (0.01 sec) 

これはグループに関係すると思いますか?あるいは、私は新しいクエリを作成し、これをこのクエリと組み合わせなければならないかもしれません。あなたが見ることができるように、私は私の次のステップが何であるべきかについて私は確信していません。誰かがそれがテーブルの詳細を持っていることが役に立つと思うならば、私に知らせてください。

多くのありがとうございます。

答えて

1

これはグループに関係すると思いますか?

はい、そうです。目的の結果を得るために、別のクエリを書く必要はありません。フォローしてください。問い合わせの上

SELECT tablea.username, tablea.campaignno, SUM(tablea.Win) Win, SUM(tablea.Goals) Goals 
FROM 
(select u.username, s.campaignno, if(f.hometeamscore>f.awayteamscore,1,0) as Win, f.hometeamscore as Goals from straightred_fixture f, straightred_userselection s, auth_user u where s.fixtureid = f.fixtureid and s.teamselectionid = f.hometeamid and s.user_id = u.id 
union all 
select u.username, s.campaignno, if(f.awayteamscore>f.hometeamscore,1,0) as Win, f.awayteamscore as Goals from straightred_fixture f, straightred_userselection s, auth_user u where s.fixtureid = f.fixtureid and s.teamselectionid = f.awayteamid and s.user_id = u.id) AS tablea 
WHERE 1 
GROUP BY tablea.username 

は、両方のサブクエリの一時テーブルtablea含むデータを作成し、必要なデータをフェッチします。

+1

迅速な対応に感謝します。シンプルで天才。私はすぐにそれを受け入れるには早すぎるので、私はすぐに答えを受け入れるでしょう。 –

+0

GROUP BYは新しいMySQLバージョンでは実行されません。 GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません! – jarlh

関連する問題