2013-04-17 37 views
-4

考慮關係 船(BID,BNAME,顏色), 水手(SID,SNAME,年齡,等級) 儲備(BID,SID,DAY) 我想要檢索的投標如果船已經通過每一個水手保留到所有水手的Oracle SQL查詢,架構鑑於

回答

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)) 
0

保留的船隻,在RESERVES.SID計數船(只算唯一的SID)將是相同的水手的計數:

SELECT bid FROM Reserves 
GROUP BY bid 
HAVING COUNT(DISTINCT sid) = (SELECT COUNT(sid) FROM Sailor)