-4

考虑关系 BOAT(BID, BNAME, COLOUR), SAILOR(SID, SNAME, AGE, RATING) RESERVES(BID,SID, DAY) 我想检索所有水手保留的船只的出价

4

2 回答 2

1

正确的关系划分实现在这里。其他人可能会建议进行汇总,但在某些情况下可能会导致误导性信息(误报)——“有哪些船只没有保留?”

SELECT bid FROM Boat WHERE NOT EXISTS (SELECT sid FROM Sailor WHERE SID NOT IN (SELECT Sid   from Reserves WHERE Sailor.SID = Reserves.SID))
于 2013-04-17T02:58:45.007 回答
0

如果每个水手都预订了一艘船,则该船的 RESERVES.SID 计数(仅计算唯一 SID)将与水手的计数相同:

SELECT bid FROM Reserves
GROUP BY bid
HAVING COUNT(DISTINCT sid) = (SELECT COUNT(sid) FROM Sailor)
于 2013-04-17T02:47:26.327 回答