我已經試過篩選子查詢結果
select title
from BOOKS B, AUTHOR A, LOANS U
where a.author_id = b.author_id
and not B.book_id = U.book_id
order by A.name
和
select title
from BOOKS B, AUTHOR A, LOANS U
where b.author_id = a.author_id
and not b.book_id in (select u.book_id from LOANS)
order by A.name, b.title
所有我需要的是從我的子查詢結果select u.book_id from LOANS
基本上表貸款包含已從圖書館借出的book_id列表。
我需要尚未借出的book_id。然後需要按照作者姓名的字母順序對其進行排序(因此order by A.name
)
注意:包含書籍的表僅包含author_id。爲了得到作者的名字,我需要將author_id與表AUTHOR中的ID進行比較。
任何人都可以告訴我我做錯了什麼,或者 - 如果我使用錯誤的方法 - 使用什麼方法?
您是否看過我最初的問題?我已經嘗試過了,但沒有奏效。另外,你做的方式,我將無法比較作者的名字,它會導致大量的書籍,而只有20本書... PS:'而不是b.book_id在(選擇你LOANS的.book_id)'是我試過的... ...與NOT IN相同 – Yorrick
是的,我誤解了它的一部分,但是你沒有說出你的查詢不起作用,或者爲什麼這會返回大量的書籍。無論如何,編輯我的答案。我還*真的不知道爲什麼你在'book'表中有'author_id',那個設計沒有任何意義;您最好使用包含'book_id'的作者列表。 – LittleBobbyTables
真的,我正在使用'where a.author_id = b.author id'而不是'inner join',因爲它是爲了一個類而我會失敗如果我使用我們還沒有看到的東西:P我們'不要在INNER JOIN部分 - 不幸的是。 無論如何,我的問題是查詢只是使用所有的書籍+所有的可能性,因爲我在主查詢中使用了'從貸款U',我也不應該這樣做。 – Yorrick