多对多加入Oracle DB

时间:2014-12-09 11:18:16

标签: sql oracle

我对Oracle中的多对多关系提出了一个问题,以及一种在查询中加入它们的方法。

我已经粘贴了我的(教科书)示例以及一些插页以清楚说明。我想要构建的查询需要提取书籍以及他们各自的作者其他没有书籍的作者。

我一直在努力:

SELECT a.name, a.surname, b.book_title
FROM books b, authors a, publish p
WHERE b.book_id = p.book_id(+) AND a.author_id = p.author_id;

然而,这没有做到这一点。

2 个答案:

答案 0 :(得分:1)

SELECT a.name, a.surname, b.book_title
FROM authors a
LEFT OUTER JOIN publish p ON a.author_id = p.author_id
LEFT OUTER JOIN books b ON b.book_id = p.book_id;

诀窍是使用 OUTER JOIN ,如果你想让作者没有书籍。

答案 1 :(得分:0)

Book
BookId PK
BookName

Author
AuthorId PK
AuthorName

BookAuthor
BookId PK, FK
AuthorId PK, FK

select b.BookName, a.AuthorName
from BookAuthor ba
inner join Book b on b.BookId = ba.BookId 
inner join Author a on a.AuthorId = ba.AuthorId
where b.BookId =: bookId;