SQL,根据它们查找具有共同属性的其他条目

时间:2014-02-01 10:12:13

标签: sql oracle

请原谅我糟糕的英语。我有一张如下所示的表格:

  

预订(BookID,标题)

     

作者(BookID,AuthID)

并且有一本书,说它是ID 52.我需要找到编写了ID为52的书的作者的其他书籍,但不包括我输出的ID列表中的ID 52。

所以我假设我可以JOIN这两个表,但问题是我不能使用子查询,所以我被困在这里。我有一种感觉,我应该使用WHERE,但我不知道如何做到目前为止所有我能弄清楚如何得到的是被分配到预订WHERE Author.BookID = 52

select Book.BookID
from Book
join Author
on Book.BookID=Author.BookID

有没有办法获得分配给ID为52的图书的人的AuthID,然后输出他们分配给的其他图书?然后MINUS ID 52预订了吗?或者我是以错误的方式解决这个问题?

再次,非常感谢任何正确方向的帮助或观点。

1 个答案:

答案 0 :(得分:4)

你想找到与给定BookId的作者相同作者的所有其他书籍,对吗?

SELECT b.BookId 
FROM   Author a 
       INNER JOIN Author b ON a.AuthID = b.AuthID AND a.BookId <> b.BookId
WHERE  a.BookId = 52;