【发布时间】:2016-09-20 10:39:28
【问题描述】:
我有以下表格
goal matches team_match
id | match_id | team_id | name match_id team_id | match_id | home_away
----------------------------- ----- ------------------------------
1 1 1 Ronaldo 1 1 1 home
2 1 2 Messi 2 1 away
3 1 2 Suarez 2 1 away
现在我只想找到在客队效力的球员。
SELECT DISTINCT g.name
FROM goal g
INNER JOIN matches m
ON g.match_id = m.match_id
INNER JOIN team_match tm
ON tm.match_id = m.match_id
AND tm.home_away = 'away'
WHERE m.match_id = '1'
但不是:
Messi
Suarez
我得到:
Ronaldo
Messi
Suarez
似乎我的第二个 INNER JOIN 完全被忽略了,即使我从“家”更改为“离开”,我也会得到相同的结果。
【问题讨论】:
-
您需要加入第三张表中的
team_id。您的问题没有足够的信息。 -
架构问题。在第一个表中需要 team_id
-
当前查询中的内部联接就像交叉联接一样工作。您需要在表 1 和表 3 之间添加额外的匹配条件。
-
是的,我忘了写我在表“目标”中有列“team_id”,我编辑了它。我通过在最后一个 INNER JOIN 中添加“AND tm.team_id = g.team_id”解决了这个问题
标签: sql database postgresql inner-join