2013-10-11 86 views
0

我有兩個表:由最新出版的一本書+作者沒有出版的書返回作者

•表1:Books
•表2:Authors

我有以下查詢:(此查詢返回與書的標題和日期,所有作者發表)

SELECT Authors.AuthorName, Books.BookTitle, Books.DatePublished, Books.Author 
FROM Authors LEFT OUTER JOIN Books ON Authors.AuthorID = Books.Author 

問題:!

我想返回所有作者(無論誰已出版圖書,以及那些不具備出版圖書。

條件(即做有書的作者。只返回最新出版的書)

我可以用下面的查詢,以獲得最新出版的一本書:

SELECT a.*  
FROM [Books] a left outer join Books b on a.Author = b.author and 
a.DatePublished < b.DatePublished where b.ISDN is null 

問:我如何可以合併這兩個查詢將所有作者+作者與最新出版的書籍歸還給 ?

+0

請添加一些樣本數據和預期的輸出很容易明白你的問題。提及數據庫像MS Sql服務器,甲骨文,MySql等。 – TechDo

回答

0

請嘗試:

SELECT DISTINCT 
    AuthorName, 
    BookTitle, 
    DatePublished, 
    Author 
FROM(
    SELECT 
     Authors.AuthorName, 
     Books.BookTitle, 
     Books.DatePublished, 
     Books.Author, 
     ROW_NUMBER() over (partition by Authors.AuthorID order by DatePublished desc) Rnum 
    FROM Authors LEFT OUTER JOIN Books ON Authors.AuthorID = Books.Author 
)x WHERE Rnum=1 
+0

我用這個查詢但是它返回重複 – user2703428

+0

請檢查通過添加一個獨特的外部選擇,我已經更新結果。 – TechDo

+0

明顯仍然返回重複項 – user2703428