Oracle的嵌套SQL语句

时间:2011-10-28 18:02:52

标签: sql oracle

我正在使用Oracle获取SQL数据库类。有一项任务:

  

“查找分行编号为4的每本书的书名,作者姓氏和手头单位”

我尝试了不同的嵌套语句方法,但没有一种方法可以使用这些表。

  • BOOK
  • AUTHOR
  • INVENTORY
  • BRANCH

这非常有帮助! (实际上想要学习这个而不仅仅是完成我的作业)到目前为止我得到了。此外,如果我只想要答案,我会这样说,......

select book.book_code, author.author_last, inventory.on_hand
from book inner join wrote on book.book_code = wrote.book_code,
author inner join wrote on author.author_num = wrote.author_num,
inventory inner join branch on inventory.branch_num = branch.branch_num
where branch.branch_num = 4; 

但现在我有一堆重复的产品

1 个答案:

答案 0 :(得分:2)

你不需要筑巢。你需要加入。

你可能需要这样的东西,虽然我需要确切的表格结构。但是你会得到一般的想法。

select
  b.TITLE,
  a.LASTNAME,
  i.UNITSONHAND
from
  BOOK b
  inner join AUTHOR a on a.AUTHORID = b.AUTHORID
  inner join INVENTORY i on i.BOOKID = b.BOOKID
  inner join BRANCH br on br.BRANCHID = b.BRANCHID
where
  br.BRANCHID = 4

有些人会认为BRANCH应该是第一个表,因为你正在过滤它。如果你愿意,你可以这样做,如果你认为它更有意义。在某些情况下,它可能会带来更好的性能,但通常查询优化器会处理它。