SQL查询问题的多对多的关系
问题描述:
我有以下表结构: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作为海盗和他们的投标是不同的。
任何想法如何实现与查询?
答
顺便说一句,你的日期不是很明确。请使用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';
答
如果我理解正确,你正在寻找一个连接操作:
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'
希望它可以帮助
提供一种基于数据样本数据和预期输出 – tonypdmtr