查找船名和颜色,以及保留“绿色”船的水手的名字。
如何将它们组合在一起?
select B.bname, B.color
from Boats B
select S.sname
from Sailors S
where S.sid in (select s.sid
from Sailors s, Reserves r, Boats b
where s.sid = r.sid and r.bid = b.bid and b.color = 'green');
我已经尝试过了,但是重复了
select B.bname, B.color, S.sname
from Boats B, Sailors S
where S.sid in (select s.sid
from Sailors s, Reserves r, Boats b
where s.sid = r.sid and r.bid = b.bid and b.color = 'green');
答案 0 :(得分:0)
您可以使用join
。您应避免使用隐式联接来获得最佳实践,而应使用ANSI join
语法,如下所示。
select
b.bname,
b.color,
s.sname
from Sailors s
join Reserves r
on s.sid=r.sid
join Boats b
on r.bid=b.bid
where b.color='green'
如果上述结果为您提供了重复项,则可以将distinct
用作distinct b.bname