SQL查询的问题

时间:2013-05-10 20:49:48

标签: sql oracle

我正在努力寻找比赛中裁判(谁是官方)的比赛,也为主队和客队提供医疗服务(请参阅下面的关系图)。

我试过这个,但它没有返回任何记录:

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;

我猜它不会因为最后两行而返回记录,但我不知道我怎样才能确保同一官员为两支队伍提供医疗服务。

以下是参考的关系图:

enter image description here

1 个答案:

答案 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