这只是答案的一半…
可以使用条件连接和投影来找到“由两个或多个水手预定的船”的关系,它们都在您允许的操作集中:
SELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sid;
可以使用条件联接(两次)和投影来找到“三个或三个以上船员预订的船”的关系,它们都在您允许的操作集中:
SELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sid JOIN Reserves AS R3 ON R1.bid = R3.bid AND R2.sid < R3.sid;
如果 我们
EXCEPT在标准SQL中有减号运算符,例如:
SELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sidEXCEPTSELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sid JOIN Reserves AS R3 ON R1.bid = R3.bid AND R2.sid < R3.sid;
如果
我们有限制(
WHERe在SQL中)和半差分(又名antijoin)运算符(例如
NOTIN在SQL中):
SELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sid WHERe R1.bid NOT IN (SELECt DISTINCT R1.bid FROM Reserves AS R1 JOIN Reserves AS R2 ON R1.bid = R2.bid AND R1.sid < R2.sid JOIN Reserves AS R3 ON R1.bid = R3.bid AND R2.sid < R3.sid );
…但是您允许的操作集不包括限制,半差或减:(



