1

BOOK、および の3 つのエンティティまたはテーブルがSCIENCEありFICTIONます。SCIENCEと呼ばれる外部キーFICTIONを介して接続されます。と呼ばれる別のフィールドも含まれています。BOOKISBNBOOKAUTHOR

サイエンスまたはフィクションの本を書いているすべての著者を選択したいと思います。2 本の著者が同じ場合は、両方の記録を保持する必要があります。

私は次の解決策を思いつきました(明らかに正しくありません):

SELECT BOOK.AUTHOR AS AUTHOR FROM BOOK, FICTION, SCIENCE
WHERE BOOK.ISBN = FICTION.ISBN OR BOOK.ISBN = SCIENCE.ISBN;

しかし、正しいものは次のとおりです。

SELECT BOOK.AUTHOR AS AUTHOR FROM BOOK, FICTION
WHERE BOOK.ISBN = FICTION.ISBN
UNION ALL
SELECT BOOK.AUTHOR AS AUTHOR FROM BOOK, SCIENCE
WHERE BOOK.ISBN = SCIENCE.ISBN;

実際、それらは異なる結果を生み出します。私のクエリは、より多くのレコードを返します。クエリの何が問題になっていますか? 私のクエリとその下の「正しい」クエリの違いは何ですか?

4

2 に答える 2

0

最初のクエリでは、Book の ISBN が Fiction ISBN と一致する場合、すべてのScience レコードが結合され、逆に Science ISBN が一致する場合、すべてのFiction レコードが結合されます。

于 2016-03-22T21:48:02.543 に答える