所以,抱歉,因为我觉得这是一个已经被问到的问题,但我无法正确地表达它以找到符合我需求的结果。
我有这 4 个表:
参加者:
id | name
----------------------
1 | Name1
2 | Name2
3 | Name3
4 | Name4
5 | Name5
6 | Name6
事件:
id | participant1 | participant2
----------------------------------------------
7 | 2 | 1
8 | 2 | 1
9 | 3 | 1
10 | 4 | 3
11 | 5 | 4
12 | 6 | 5
事件组:
id | groupId | eventId
----------------------------------------------
1 | 1 | 7
2 | 1 | 8
3 | 1 | 9
4 | 2 | 10
5 | 2 | 11
6 | 2 | 12
群组:
id | name
----------------------
1 | GroupName1
2 | GroupName2
所以,到目前为止我有这个:
Select * from EventGroups eg
join Groups g on eg.groupId = g.id
join Events e on e.id = eg.eventId;
这就是结果:
id | groupId | eventId | name | participant1 | participant2
-----------------------------------------------------------------------------
1 | 1 | 7 | GroupName1 | 2 | 1
2 | 1 | 8 | GroupName1 | 2 | 1
3 | 1 | 9 | GroupName1 | 3 | 1
4 | 2 | 10 | GroupName2 | 4 | 3
5 | 2 | 11 | GroupName2 | 5 | 4
6 | 2 | 12 | GroupName2 | 6 | 5
所需的输出是:
id | groupId | eventId | name | participant1 | participant2
-----------------------------------------------------------------------------
1 | 1 | 7 | GroupName1 | Name2 | Name1
2 | 1 | 8 | GroupName1 | Name2 | Name1
3 | 1 | 9 | GroupName1 | Name3 | Name1
4 | 2 | 10 | GroupName2 | Name4 | Name3
5 | 2 | 11 | GroupName2 | Name5 | Name4
6 | 2 | 12 | GroupName2 | Name6 | Name5
我的意思是,将每列中的参与者 ID 替换为匹配表中相应的名称。
语言是Mysql。
可能吗?
提前致谢!
最佳答案
只需加入参与者表两次,每个参与者一次,然后使用参与者1和参与者2作为匹配参与者姓名的别名。
Select eg.id, eg.groupId, eg.EventId, g.name, p1.name as participant1, p2.name as participant2 from EventGroups eg
join Groups g on eg.groupId = g.id
join Events e on e.id = eg.eventId
join Participants p1 on p1.id = e.participant1
join Participants p2 on p2.id = e.participant2;
关于mysql - 替换 select 语句中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013029/