2017-11-18 129 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' 

希望它可以幫助