如何在存储过程中使用复合 pk?

How do I use a composite pk in a stored procedure?

我是存储过程的新手,我想创建一个存储过程,我通过三个 table 来获取我需要的数据,第三个 table 有一个复合 pk这让我有点抓狂,我就是无法正确看待这个问题。但我必须解决它。

我有一个数据库,其中包含三个彼此相关的 table - playercompanycompany_resource。 tables playercompany 具有正常的 pk (id) 而 company_resource 具有复合 pk (company_id, resource_id - resource_id 来自另一个 table,这是不相关的权利知道)。另外 company table 有一个外键 player_id

所以它看起来像这样:

player-Table:

id
1
2
3
4
...
company-Table:

id     player_id (fk)
1      1
2      1
3      2
4      3
...
company_resource-Table:

company_id (pk)   resource_id (pk)
1                 1
1                 2
1                 3
1                 4
2                 1
2                 2

知道我想将 player_id 传递给我的存储过程,首先获取所有具有相同 player_id 的公司,然后获取从中找到的公司的所有 company_resource 条目给出 player_id.

我的主要目标是获取属于特定玩家的公司的所有资源,然后对特定列进行求和,因此我可以将求和的结果值写入 player table.

我已经搜索了不同的帖子,但找不到任何合适的解决方案。

我不会写存储过程逻辑,但这是一个简单的连接。

您根据共享密钥(公司 ID)将公司 table 连接到公司资源 table;然后,您可以通过指定 player_id.

来限制您查看的公司数量
select *
from company c
inner join company_resource cr
  on c.company_id = cr.company_id
where c.player_id = ?