Postgresql 使用postgres中主查询的值执行子查询

Postgresql 使用postgres中主查询的值执行子查询,postgresql,subquery,Postgresql,Subquery,我试图通过使用子查询中主查询的相同值来匹配两个表之间的数据。为此,我使用了3个表: 世界-玩家所在的世界区域 玩家-实际玩家 被摧毁的物品-只是一个用来记录玩家世界进步的统计表 我想做的是创建一个查询,显示游戏和他们所在的世界,并获得他们在该世界中破坏的所有对象的计数。我的查询当前是这样的: select world_id, world_name, player_id count(select * from objects_destoryed where play

我试图通过使用子查询中主查询的相同值来匹配两个表之间的数据。为此,我使用了3个表:

世界-玩家所在的世界区域 玩家-实际玩家 被摧毁的物品-只是一个用来记录玩家世界进步的统计表

我想做的是创建一个查询,显示游戏和他们所在的世界,并获得他们在该世界中破坏的所有对象的计数。我的查询当前是这样的:

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子句,使其键离开世界,而不是玩家。在那个世界上,每个球员都会有自己的一排。

我想我把我的问题复杂化了。谢谢你的帮助。