所以我得到了一个名为匹配的表,其中包含2个团队ID,这些团队在同一个名为clans的表中
匹配
team1_id | team2_id
2 | 4 1 | 2 4 | 1
和
部族
ID | Name 2 | abc 1 | cde 4 | efg
我的目标是,当我在网页上打印出来时,会显示团队名称而不是他们的ID。现在解释一下,我正在使用laravel,使用以下代码:
$unfinished = DB::table('matches')->where('team1_score', NULL)
->join('matches', 'matches.team1_id', '=', 'clans.id')
->join('matches', 'matches.team2_id', '=', 'clans.id')
->select('clans.clan_name as team1_name', 'clan_name as team2_name', 'matches.id'
)->get();
我需要将它们全部存储在$ unfinished中。当然,这段代码不起作用,我想我理解为什么。然而,我无法弄清楚的是如何解决这个问题,以便它能够发挥作用。它吐出以下exakt错误:
SQLSTATE [42000]:语法错误或访问冲突:1066不唯一的表/别名:'matches'(SQL:选择clans
。clan_name
为team1_name
,{{1} } clan_name
,team2_name
。matches
,id
。tournaments
来自name
内部加入matches
tournaments
。tournaments
= id
。matches
内部加入tournaments_id
位于matches
。matches
= team1_id
。clans
内心在id
上加入matches
。matches
= team2_id
。clans
其中id
为空)
答案 0 :(得分:4)
使用别名:
$unfinished = DB::table('matches')->where('team1_score', NULL)
->join('clans AS clans1', 'matches.team1_id', '=', 'clans1.id')
->join('clans AS clans2', 'matches.team2_id', '=', 'clans2.id')
->select('clans1.clan_name as team1_name', 'clans2.clan_name as team2_name', 'matches.id'
)->get();