這裏似乎有很多冗餘。有沒有更高效的方法,還是需要使用工會? inner join
也在那裏,因爲players
表沒有酒店信息,必須從teams
中檢索。有沒有更有效的方法來編寫這個簡單的SQL查詢?
select players.name
from players
inner join teams
on players.team = teams.name
where teams.staysat = 'Ambassador'
and teams.checkin is not null
and teams.checkin < '18-AUG-07'
and teams.checkout > '18-AUG-07'
--
union all
select officials.name
from officials
where officials.staysat = 'Ambassador'
and officials.checkin is not null
and officials.checkin < '18-AUG-07'
and officials.checkout > '18-AUG-07'
--
union all
select fans.name
from fans
where fans.staysat = 'Ambassador'
and fans.checkin is not null
and fans.checkin < '18-AUG-07'
and fans.checkout > '18-AUG-07';