Postgresql 使用postgres中主查询的值执行子查询
我试图通过使用子查询中主查询的相同值来匹配两个表之间的数据。为此,我使用了3个表: 世界-玩家所在的世界区域 玩家-实际玩家 被摧毁的物品-只是一个用来记录玩家世界进步的统计表 我想做的是创建一个查询,显示游戏和他们所在的世界,并获得他们在该世界中破坏的所有对象的计数。我的查询当前是这样的:Postgresql 使用postgres中主查询的值执行子查询,postgresql,subquery,Postgresql,Subquery,我试图通过使用子查询中主查询的相同值来匹配两个表之间的数据。为此,我使用了3个表: 世界-玩家所在的世界区域 玩家-实际玩家 被摧毁的物品-只是一个用来记录玩家世界进步的统计表 我想做的是创建一个查询,显示游戏和他们所在的世界,并获得他们在该世界中破坏的所有对象的计数。我的查询当前是这样的: select world_id, world_name, player_id count(select * from objects_destoryed where play
select
world_id,
world_name,
player_id
count(select * from objects_destoryed where player_id = <insert player ID>) as Stats
from
Worlds
join Players using (player_id)
where
player_id = <insert player ID>
我想问的是,是否有更好的方法,而不是包括球员ID两次,以获得整体统计数据。还有没有一种方法可以让我扩展到在那个世界的多个玩家身上运行?例如在语句中使用player_id
感谢您的建议我没有使用postgresql,但在其他SQL版本中,类似这样的功能也可以:
select
world_id,
world_name,
player_id
count(*) as Stats
from
Worlds
join Players using (player_id)
join objects_destroyed using (player_id)
where
player_id = <insert player ID>
group by world_id, world_name, player_id
select语句的目标是为世界上被玩家破坏的每个对象返回一行,然后允许GROUPBY子句将具有相同世界和玩家的行折叠为一行,并将行数合并为统计数据
为了为几个玩家返回结果,您只需更改where子句,使其键离开世界,而不是玩家。在那个世界上,每个球员都会有自己的一排。我想我把我的问题复杂化了。谢谢你的帮助。