Postgresql:如何获取已被另一个 table 中的键 id 替换的值?

Posgresql: How to get values that have been replaced by keys id in another table?

我有 2 个 table 数据库,如下所示。 table A 中的列名替换为 table B

的 id
Match
id  my_member_id    your_member_id  date    score
1       2                   4       ...     ...
2       3                   4       ...     ...
3       1                   3       ...     ...
4       2                   3       ...     ...

Team
id          member_name
1               A
2               B
3               C
4               D

我想要如下结果:

Table Versus
date    my_member   your_member score
...         B           D       ...
...         C           D       ...
...         A           C       ...
...         B           C       ...

我的查询要花很长时间才能执行,所以我认为它在某处是错误的

WITH RECURSIVE my_team AS
(
    SELECT m.id, t.member_name AS my_member
    FROM Team t INNER JOIN Match m ON t.id = m.id
),
your_team AS
(
    SELECT id, my_member, ''::TEXT AS your_member
    FROM my_team 
    
    UNION ALL
    
    SELECT mt.id, mt.my_member, cte.your_member
    FROM my_team mt INNER JOIN your_team cte ON mt.id = cte.id
)
SELECT date, my_member, your_member, score
FROM Match m INNER JOIN your_team yt at ON m.id = yt.id

你不需要递归。

加入 team 两次,使用别名:

select m.date, my.member_name as my_member, y.member_name as your_member, m.score
  from match m
  join team my on my.id = m.my_member_id
  join team y on y.id = m.your_member_id;