我正在努力寻找比赛中裁判(谁是官方)的比赛,也为主队和客队提供医疗服务(请参阅下面的关系图)。
我试过这个,但它没有返回任何记录:
select matches.id,
matches.home,
matches.away,
matches.referee
from matches
join officials on officials.staffid = matches.referee
join medicalservices on medicalservices.team in (matches.home, matches.away)
where medicalservices.team = matches.home
and medicalservices.team = matches.away;
我猜它不会因为最后两行而返回记录,但我不知道我怎样才能确保同一官员为两支队伍提供医疗服务。
以下是参考的关系图:
答案 0 :(得分:1)
您需要两次加入医疗服务,一次找到提供给主队的服务,再次找到提供给客队的服务。然后,您可以检查提供给每个团队的服务是否由同一个裁判提供。
您也不需要官方表。
select matches.id,
matches.home,
matches.away,
matches.referee
from matches
join medicalservices home_medservices on home_medservices.team = matches.home
join medicalservices away_medservices on away_medservices.team = matches.away
where home_medservices.official = matches.referee
and away_medservices.official = matches.referee