【问题标题】:Nested SQL statements for Oracle [closed]Oracle 的嵌套 SQL 语句 [关闭]
【发布时间】:2011-12-17 11:57:45
【问题描述】:

我正在学习使用 Oracle 的 SQL 数据库课程。有一个任务:

“查找 4 号分支中每本书的书名、作者姓氏和手头单位”

我尝试了不同的嵌套语句方式,但没有一个适用于这些表。

  • 预订
  • 作者
  • 库存
  • 分行

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

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 因为你没有表现出任何迹象表明你试图自己解决这个问题。

标签: sql oracle


【解决方案1】:

你不需要嵌套。你需要加入。

您可能需要这样的东西,尽管我需要确切的表结构来确定。但你会得到大致的想法。

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 应该是第一个表,因为您正在对其进行过滤。如果您愿意并且认为它更有意义,您可以这样做。在某些情况下,它可能会带来更好的性能,尽管查询优化器通常会处理它。

【讨论】:

  • 你不觉得这对课堂作业来说有点多
  • 为什么?如果有人问这个问题,而这个人实际上是因为自己编写这些查询而获得报酬,我会发布相同的答案。
  • 当然这完全取决于你,但faq 中关于回答作业问题的部分建议不要输入完整的代码。
  • @ConradFrix “...如果您认为这对学生没有帮助,请使用您的最佳判断”。虽然我实际上不知道我是否帮助了这个特定的学生,但我认为一般来说,如果它是清晰且不言自明的代码,那么一个示例可以正常工作。我承认,我本可以添加更多解释(并省略优化部分),但我很难理解 OP 的知识到底是什么时候很短。
  • @GolezTrol 没有告诉我答案,他只是把我引向了正确的方向,我显然做得不对。我仍然需要重新阅读一整章才能将其整合在一起。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2011-03-12
  • 1970-01-01
  • 2012-01-07
相关资源
最近更新 更多