将两个表与一个表的两个结果连接起来

时间:2019-03-24 22:54:52

标签: sql database postgresql

我有一个问题,我似乎无法找出正确的搜索方式。 我需要连接两个表才能从一个表中得到两个结果

foreach ($search->filters as $key => $value) {
    // Check for column search
    if($value->type === 'column'){
         $query->where($value->name, 'LIKE', "%{$value->text}%");
    }
    // Check for concat search
    if($value->type === 'concat'){
         $query->where(?);
    }
}
teams table

id    name
------------
1     team A
------------
2     team B

以上结果应为

games table 

id   home_team   away_team
--------------------------
1    1           2 
--------------------------
2    2           1

混乱从game_id home_team away_team ------------------------------- 1 team A team B ------------------------------- 2 team B team A 开始,显然没有任何意义。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

您需要两次链接到同一张表并使用别名:

select g.game_id, h.name as home_team, a.name as away_team
from games g
join teams h on h.id = g.home_team
join teams a on a.id = g.away_team

因此,您要链接到teams表,将其别名为主队使用h,并再次链接到其表名将其别名为a(对于客队)。