2

我有 3 张玩家桌,它的武器桌和虚拟桌“拥有武器”。
玩家表有 player_id,player_name,武器表有 Weapon_id, Weapon_name, Weapon_cost。拥有武器表有 player_id,武器_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 回答