两列一个外键

ser*_*_ka 4 mysql foreign-key

我有两张桌子,Results还有Teams

Teams 有以下列:

team_id
team_name
Run Code Online (Sandbox Code Playgroud)

Results 有以下列:

match_id
home_team (foreign key references teams [team_id])
away_team (foreign key references teams [team_id])
score
yellow_cards
red_cards
Run Code Online (Sandbox Code Playgroud)

当我写查询时:

select team_name, score 
FROM teams, results 
WHERE results.home_team = teams.team_id
  AND results.away_team = teams.team_id 
Run Code Online (Sandbox Code Playgroud)

它会给我空集。

我对同一个表中的两个不同列使用相同的外键这一事实是否有问题?

ype*_*eᵀᴹ 10

查询结果是正确的,因为您的查询会找到所有球队和球队与自己比赛的结果 ( home_team = away_team)。

您可能想teams在查询中使用 2 个连接:

SELECT 
    home.team_name AS home_team_name, 
    away.team_name AS away_team_name, 
    r.score 
FROM 
    results AS r
  JOIN teams AS home 
    ON r.home_team = home.team_id
  JOIN teams AS away 
    ON r.away_team = away.team_id ;
Run Code Online (Sandbox Code Playgroud)