【问题标题】:Need assistance with SQL statement having trouble with the JOINS and WHERE clause在 JOINS 和 WHERE 子句遇到问题的 SQL 语句方面需要帮助
【发布时间】:2021-12-14 22:36:26
【问题描述】:

公司正在对其库存进行分析。他们正在考虑清除不受客户欢迎的书籍。为此,他们需要一份从未购买过的书籍清单。使用提供此信息的连接编写查询。您的结果应包括所有书籍详细信息和订单号列。按书名对结果进行排序。

 SELECT o.order_nbr, b.*
 FROM orders o JOIN books 
 WHERE 
 ORDER BY book_title

这就是我能想到的,我仍在学习 Joins 并努力找出正确的陈述应该是什么。不确定在 WHERE 子句中添加什么内容,也不知道如何正确连接这些表。

【问题讨论】:

  • 您的“我迷路了”不清楚,请编辑澄清。 PS请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。请在考虑发布之前阅读手册和谷歌任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,带有和不带有您的特定名称/字符串/数字、“site:stackoverflow.com”和标签;阅读许多答案。反映你的研究..How to AskHelp center
  • 请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于 SQL 包括 DDL 和表格初始化代码。当你得到一个出乎意料的结果时,暂停你的总体目标,切到第一个有意外结果的子表达式,说出你的预期和原因,并由文档证明。
  • 不要在回复帖子时编辑您的问题。把它作为一个问题。答案在答案帖子中,您通过单击复选标记接受它表明它很有帮助。如果您自己找到答案,请发布您自己的答案帖子,并在最短等待时间后接受它。我已回滚您的编辑。但是请编辑您的帖子,以针对早期的 cmets 提出明确的特定研究非重复问题。 PS请不要只在标题中放一些东西。 How to AskHow to AnswerHelp center

标签: sql join oracle-apex where-clause


【解决方案1】:

您需要一个ON 子句来指定您要加入的内容。此外,您的 WHERE 子句是空的,并且您没有指定您正在使用的 JOIN 的类型。查看表的设置方式,期望您将加入ORDER_ITEMS 上的BOOKS 表,其中还包含ORDER_NBR

在问题中,它要求查找没有订单的书籍,因此正确的连接将是BOOKSORDER_ITEMS 之间的 LEFT JOIN,因为这将包括每一本书,即使是那些没有订单的书籍,它们都会有一个ORDER_NBRNULL

SQL 看起来像

SELECT o.order_nbr, b.*
 FROM books b
 LEFT JOIN order_items o on b.book_id = o.book_id
 WHERE o.order_nbr is null
 ORDER BY book_title

这将只返回没有订单的书籍。

【讨论】:

  • 只是问,这当然有效,但我很感兴趣如果我使用 FULL JOIN 而不是 LEFT JOIN 会发生什么并得到相同的结果。这正常吗?我仍在学习所有这些不同的连接
  • 是的,FULL JOIN 也可以;在这个例子中,books LEFT JOIN order_items 加入了两个表,但也保留了任何没有要匹配的 orders_items 的书。一个 FULL JOIN 将保留任何没有 order_items 的书籍,也将保留任何没有书籍的 order_items。我指定 LEFT JOIN 是因为我们只对没有匹配 order_items 的书籍感兴趣,所以 FULL JOIN 没有优化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多