2017-11-18 132 views
0

我有以下表结构:SQL查询问题的多对多的关系

Sailor

sid sname 
------------------- 
22  Dustin 
29  Brutus 
31  Luber 
32  John 

Boat

bid bname 
------------------- 
101 Pirate 
102 Pirate 
103 Marine 

Reserve

bid sid day 
------------------------------ 
101 22 10/10/98 
102 22 10/10/98 
103 22 10/8/98 
103 31 10/7/98 
102 29 9/8/98 
103 32 9/8/98 

预期的结果是:找到所有名为Pirate的船员的姓名。

基本上,我需要查询所有已经预定船名为Pirate的船员姓名。

唯一的问题是,在表中,我有2列bname作为海盗和他们的投标是不同的。

任何想法如何实现与查询?

+0

提供一种基于数据样本数据和预期输出 – tonypdmtr

回答

0

顺便说一句,你的日期不是很明确。请使用YYYY-MM-DD(或YYYYMMDD)格式。

不管怎么说,这是一个办法:

select b.bid,b.bname,s.sid,s.sname,r.day 
    from Boat b join Reserve r on b.bid = r.bid 
    join Sailor s on r.sid = s.sid 
    where b.bname = 'Pirate'; 
0

如果我理解正确,你正在寻找一个连接操作:

SELECT S.* FROM Sailor S JOIN Res R ON S.sid = R.sid 
JOIN Boat B on R.bid = B.bid where B.bname = 'Pirate' 

希望它可以帮助