私はこれに対する解決策を探していました。同様の質問がたくさんありますが、問題を解決するのに役立つ適切な回答はありません。
まず、私の質問/問題:
- 複数の結合クエリで特定の列を合計してカウントしたい
- 複数の結合では不可能ですか?
SELECT
クエリをネストする必要がありますか?
サンプル データを含む私のデータベースの SQL ダンプは次のとおりです。
これは私がトリックを行うと思ったクエリです:
SELECT firstname, lastname, sum(goal.goal), sum(assist.assist), sum(gw.gw), sum(win.win), count(played.idplayer) FROM player
LEFT JOIN goal USING (idplayer)
LEFT JOIN assist USING (idplayer)
LEFT JOIN gw USING (idplayer)
LEFT JOIN win USING (idplayer)
LEFT JOIN played USING (idplayer)
GROUP BY idplayer
これを作成したいのは、次のように、ゴール、アシスト、gw、勝利、およびプレイの列がその列のすべての行の合計/カウントであるテーブルです: (提供されたサンプル データを使用)
+-----------+----------+------+--------+----+-----+--------+
| firstname | lastname | goal | assist | gw | win | played |
+-----------+----------+------+--------+----+-----+--------+
| Gandalf | The White| 10 | 6 | 1 | 1 | 2 |
| Frodo | Baggins | 16 | 2 | 1 | 2 | 2 |
| Bilbo | Baggins | 7 | 3 | 0 | 0 | 2 |
+-----------+----------+------+--------+----+-----+--------+
上記の質問をもう一度繰り返しますが、これは 1 つのクエリと複数の結合で可能ですか?
解決策/クエリを提供する場合は、それらを説明してください! 私は適切なリレーショナル データベースを初めて使用し、このプロジェクトの前に結合を使用したことがありません。また、必要な場合を除き、エイリアスを避けていただければ幸いです。
合計とグループ化を行わずに上記のクエリを実行すると、実行する列ごとに一連の行が得られますSELECT
。これは、乗算または加算されると思われますが、グループ化および/または実行sum(TABLE.COLUMN)
するとそれが解決されるという印象を受けました.
SELECT DISTINCT
もう1つのことは、または他のDISTINCT
操作を実行すると、一部の(「重複」)結果が除外されるため、機能しないと思います。
PS。問題があれば、私の開発マシンは WAMP ですが、リリースは ubuntu/apache/mysql/php になります。