みなさん、おはよう/こんばんは
2 つのテーブルを 1 つのテーブルと一致するステートメントSUM()
の特定の列の値に (LEFT) JOIN しようとしています。ON fk_id = id...
テーブルは次のようになります。
ws1 テーブル:
ws2 テーブル:
これまでに試したクエリ:
SELECT
alias.name alias,
(SUM(IFNULL(ws1.teamkills,0)) + SUM(IFNULL(ws2.teamkills,0))) teamkills
FROM pickup
JOIN player ON player.pickup_id = pickup.id
JOIN alias ON player.alias_id = alias.id
LEFT JOIN weapon_stats_1 ws1 ON ws1.pickup_id = pickup.id AND ws1.player_id = player.id
LEFT JOIN weapon_stats_2 ws2 ON ws2.pickup_id = pickup.id AND ws2.player_id = player.id
WHERE pickup.logfile_name = 'srv-20130725-2151-log' GROUP BY player.id
結果:
と:
SELECT
alias.name alias,
(SUM(DISTINCT IFNULL(ws1.teamkills,0)) + SUM(DISTINCT IFNULL(ws2.teamkills,0))) teamkills
FROM pickup
JOIN player ON player.pickup_id = pickup.id
JOIN alias ON player.alias_id = alias.id
LEFT JOIN weapon_stats_1 ws1 ON ws1.pickup_id = pickup.id AND ws1.player_id = player.id
LEFT JOIN weapon_stats_2 ws2 ON ws2.pickup_id = pickup.id AND ws2.player_id = player.id
WHERE pickup.logfile_name = 'srv-20130725-2151-log' GROUP BY player.id
結果:
同じ値の結果を 1 つだけ選択するため、 がSUM(DISTINCT.... )
返されることを理解しています。2
DISTINCT
私の目標はSUM()
、両方のteamkills
フィールドを取得して、それらを合計することです。3
この例では、 where player_id
isを返す必要があり4
ます。どうやってやるの?
編集:
テーブル「プレーヤー」:
テーブル「ピックアップ」: