2

私は 3 つのテーブルを持っています。プレイヤー テーブル、その武器テーブル、およびダミー テーブル「所有武器」です。
プレーヤー テーブルには player_id,player_name があり、武器テーブルにはweapon_id,weapon_name,weapon_costがあります。所有する武器テーブルには、player_id、weapon_id があります。

プレイヤーテーブル

player_id      player_name
1               mr.A
2               mr.B

武器表

weapon_id      weapon_name       weapon_cost
1              sniper            100
2              gun               120
3              hummer            90

武器表所持

player_id      weapon_id
1              1
1              2
1              3
2              2
2              3

プレイヤー名、彼が保持している武器の総数、および彼が現在保持しているすべての武器の合計コストを表示するためのSQLステートメントを試しました....しかし、「プレイヤー名は集計関数の一部ではありません」のようなエラーが出てきますカウントおよび合計機能。エラーが出ます。助けてください

4

1 に答える 1

6

まず、テーブルを結合する必要があります。GROUP BY次に、集計関数を使用しているため、集計関数ではない列で句を使用する必要があります。

したがって、クエリは次のようになります。

select p.player_name,
  count(w.weapon_id) as TotalWeapons,
  sum(w.weapon_cost) as TotalCost
from ([player] as p
inner join [Possess_Weapon] as pw
  on p.player_id = pw.player_id)
inner join [weapon] as w
  on pw.weapon_id = w.weapon_id
group by p.player_name

クエリに複数の結合がある場合、MS Access では結合を括弧で囲む必要があることに注意してください。

デモを参照してください。デモは SQL Server ですが、これは MS Access でテストされ、結果が返されました。

| PLAYER_NAME | TOTALWEAPONS | TOTALCOST |
------------------------------------------
|        mr.A |            3 |       310 |
|        mr.B |            2 |       210 |
于 2013-03-31T13:38:10.230 に答える