1

クエリの結果を希望どおりにグループ化したり合計したりするのに大きな問題があります。やりたいことを言葉で説明するのが難しいので、お見せします。A、H、および W の 3 つのテーブルがあります (簡略化)。

表 A:

Aid name
1   adam
2   bob 

表 H:

Hid Wid  date  atk  Aid
1   1    -     10   2
2   2    -     1    1
3   2    -     5    1
4   1    -     2    2
5   1    -     22   1
6   2    -     7    2

表 W:

Wid name     user pass
1   charlie  -    -
2   donald   -    -

Aid と Wid でグループ化されたatkの合計を取得しようとしています。基本的に、これはファイト クラブの集計であると仮定します。人 W が人 A を攻撃した回数の合計を表示したいと思います (常に一方向の戦いになります。つまり、チャーリーはアダムしか攻撃できませんが、アダムはチャーリーを攻撃できません)。(実際にはファイトクラブではありません-オンラインゲームに使用されています:))

私は自分の結果を次のようにしようとしています:

name1     atk  name2
charlie   22   adam
charlie   12   adam
donald    6    bob
donald    7    bob

私の現在のクエリは次のようになります...

SELECT w.name AS name1, h.atk, a.name AS name2
FROM H 
JOIN W ON w.Wid=h.Wid
JOIN A ON a.Aid=h.Aid

...これにより、name1 が name2 を攻撃したすべてのインスタンスが得られます。GROUP BY および/または SUM(h.atk) を実行しようとすると、理解できない方法でグループ化または合計されます。これを達成する方法がわかりません。どんな助けでも大歓迎です。

前もって感謝します!

4

1 に答える 1

0
SELECT w.name AS name1, sum(h.atk) as atk, a.name AS name2
 FROM H 
JOIN W ON w.Wid=h.Wid
JOIN A ON a.Aid=h.Aid
GROUP BY w.name, a.name
于 2012-08-10T21:18:43.313 に答える