我試圖解決運動#36是表頭船的數據庫名稱(考慮到結果表)。SQL-EX.ru練習#36
頭一般是首先在線路該類船舶的名稱(即2個一般但1個構建之前另一個這樣的第一艘船是「頭船」)。我的結果表明我說過以下內容:
您的查詢在第一個(可用)數據庫上返回了正確的數據集,但它在第二個檢查數據庫上返回了不正確的數據集。 *錯誤的記錄數(1以下)
我的查詢如下:
SELECT A.name FROM Ships A
WHERE A.name = A.class
AND A.launched = (SELECT MIN(B.launched) FROM Ships B
WHERE A.name = B.name
AND A.class = B.class)
UNION ALL
SELECT A.ship
FROM Outcomes A
WHERE A.ship IN (SELECT C.ship FROM Outcomes C, Classes D
WHERE C.ship IN (SELECT ship FROM Outcomes)
AND C.ship NOT IN (SELECT name FROM Ships)
AND C.ship = D.class
)
數據庫的設置如下:
海軍艦艇在第二次世界大戰參加了該數據庫II正在考慮之中。
該數據庫具有以下關係:
Classes(class, type, country, numGuns, bore, displacement)
Ships(name, class, launched)
Battles(name, date)
Outcomes(ship, battle, result)
船舶在班級佈置成一個單一的項目。一個班級通常被分配考慮中的班級中的第一艘船的名字(頭船);否則,班級名稱與數據庫中的任何船名不一致。
Classes關係包括班級名稱,類型(戰艦的bb或戰鬥巡洋艦的bc),建造船的國家,主炮數量,炮管口徑(槍管直徑,in英寸)和位移(重量以噸計)。
船舶關係包括船名,它的類名,並推出一年。
的戰鬥關係涵蓋的名稱和戰鬥艦艇參加日期;而他們參與戰鬥的結果(沉沒,損壞或未受傷 - 確定)在結果關係中。
注:
- 成果的關係可能包括不包括船舶關係的船隻。
- 沉船不能參加以後的戰鬥。
現在我的查詢返回正確的答案,但在聯合它沒有返回正確的值?我的理解是,船舶表中不存在其中一個船名,所以我從「成果」中選擇了它來解決問題。但即使這樣也是不正確的。有什麼我失蹤?
你從來沒有說明練習要求你做什麼,所以我不知道查詢應該返回什麼。 –
在該部分添加。沒有意識到我錯過了它 – Help123