2013-10-11 89 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