次のクエリを使用してこれらのテーブルに関する情報を取得していますが、defenderhitおよびdefenderdamage SUM値は、最初の結合の行番号の行数で乗算されています。
テーブル'バトル':
battle_id city_id attacker defender battle_time
1 07 6 0 1342918014
テーブル'バトルヒット':
battle_id family_id user_id hits damage
1 0 0 1000 50000
1 6 15 108 3816
1 6 2 81 2046
1 6 1 852 1344
MySQLクエリ:
SELECT b.battle_id, b.city_id, b.attacker, b.defender, b.battle_time,
SUM(COALESCE(bh1.damage,0)) AS attackerdamage, SUM(COALESCE(bh2.damage,0)) AS defenderdamage,
SUM(COALESCE(bh1.hits,0)) AS attackerhit, SUM(COALESCE(bh2.hits,0)) AS defenderhit
FROM battles AS b
LEFT JOIN battlehits AS bh1 ON b.attacker = bh1.family_id
LEFT JOIN battlehits AS bh2 ON b.defender = bh2.family_id
WHERE b.battle_id=1
GROUP BY b.battle_id LIMIT 1
このクエリの結果は次のとおりです。
battle_id city_id attacker defender battle_time attackerdamage defenderdamage attackerhit defenderhit
1 07 6 0 1342918014 7206 150000 1041 3000
表のデータからわかるように、defenderhitとdefenderdamageのSUM値は1000と50000であると想定されていますが、これらは3倍されています。ここで何をしているのですか?どうしたの?
前もって感謝します。