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;
我有 2 个 table 数据库,如下所示。 table A 中的列名替换为 table B
的 idMatch
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;