问题标签 [inline-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
976 浏览

sql - Oracle 内联视图中的引用列问题

我有三张桌子作为主人,孩子和孙子。简化如下:

在一个更大的查询中,我将这三个表加入到这样的内联视图中:

我的问题是我没有在 where 子句中指定哪个 time_stamp 引用。令人惊讶的是,我没有收到任何错误,而是数据库决定使用 table1.time_stamp 列!我的第一个问题是为什么我没有得到“ORA-00918: column ambiguously defined”?我花了一些时间来发现问题,但是当找到问题时,可以通过在内联视图的选择中指定我在这种情况下感兴趣的列 tbl3.time_stamp 来轻松纠正。在测试时,我确实发现如果我在列列表中包含两个 time_stamp,那么正如预期的那样,我将得到 ORA-00918。

请帮帮我,我在这里遗漏了什么还是 Oracle 11 中的内联视图存在一些问题(错误或功能)?

0 投票
2 回答
4192 浏览

sql - 使用列的最大值过滤oracle sql表中的行

我正在学习 oracle SQL,我有一个如下表:

上表表示我使用查询创建的内联视图。如您所见,表格按名称和国家分组并进行计数。我想使用 count 列过滤表以获得如下内容:

如您所见,对于每个名称,我想根据计数选择国家。

0 投票
2 回答
492 浏览

sql - 如何在 Oracle / SQL 的主查询中与表执行联接时使用内联视图获取前 n 个?

这似乎是一个非常简单的查询,但我必须遗漏一些明显的东西。我假设这种情况很常见。

我有一个存储产品的表和另一个存储交易的表。交易表有关于销售员的信息。现在,我需要生成一份报告,列出所有产品并包含最后销售该产品的销售人员的 ID。

我尝试了一个简单的查询,例如:

select id, product_name, (select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1) salesman_id from products a

这个查询在 a.id 上给了我无效的标识符。

所以在网上搜索后,我尝试在其中添加一个 LATERAL 子句。如下

select id, product_name, salesman_id from products a, LATERAL(select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1)

但是这个查询给了我不完整的 SQL 语句。

有没有一种简单的方法可以在单个查询中实现这一点?

0 投票
1 回答
147 浏览

sql - 第一个查询数据用于第二个查询

我有一个查询get_product

和第二个查询

在第二个查询中,我们使用来自第一个查询的数据(get_product是第一个查询)。我怎么把那张桌子弄到这里来?

0 投票
1 回答
434 浏览

mysql - 编程新手:为什么我不能在 Oracle SQL 中为内联视图设置别名?

我是编程新手,我正在用家里的教科书自学 ORACLE sql。我想知道是否有人可以解释为什么这个脚本不起作用。我已经能够以其他方式做到这一点并得到答案,但我只是想了解为什么我无法为内联视图起别名的基本原理。谢谢。

返回:“SQL 命令未正确结束”

表 Grade_report 有列:section_number、section_ID、Grades;
学生表有列:stno(学号);
表Section有列:section_ID、Instructor;

0 投票
2 回答
1930 浏览

sql - SQL 内联视图子查询

是否可以从 WHERE 子句的子查询中引用“FROM”子句中定义的内联视图?

在这个例子中,我试图列出所有的老师,对于他们每个人,我想展示具有最高平均参加学生的课程(根据所有课程计算)。我尝试使用内联视图 (tmp) 来计算每门课程的平均参加学生人数,但我不知道是否可以在子查询 SELECT max(...) 中引用该视图。我需要它来使用 Oracle,但不幸的是,目前我没有任何 Oracle 数据库可以尝试。我尝试使用 MySQL(因为我认为我没有使用任何特定于 Oracle 的功能),但正如预期的那样,我收到错误“表 'db.tmp' 不存在”。甲骨文有可能吗?

这是我的示例架构:

(对不起,我的英语不好)

0 投票
2 回答
75 浏览

oracle - 重构内联视图

有人可以帮我在内联视图中重组这个查询吗?

样本

0 投票
0 回答
775 浏览

django - 如何在 Django ORM 的 FROM 子句中获取子查询

我正在尝试使用 Django ORM 表达以下(Postgres)SQL 语句:

问题是我在 FROM 子句中使用了子查询(也称为“内联视图”)。

我尝试过使用.extra(tables=['...']),但 Django 在语句中添加了引号,使 SQL 无效。

我宁愿不求助于.raw查询。有没有办法做到这一点?如果核心 API 没有提供方法,也许可以通过可重用的应用程序。

编辑

这是使用连接的(看似)等效语句:

它的速度大约慢了 3 倍,但可以使用 Django 1.9 ORM 方法来编写它:

0 投票
1 回答
993 浏览

sql - Oracle 12c 子查询分解内联视图现在有不好的计划?

更新 11/2

12c在进行了一些额外的故障排除后,我的团队能够将这个 Oracle 错误直接与查询停止工作前一天晚上对数据库进行的参数更改联系起来。在遇到与该数据库相关的应用程序的一些性能问题后,我的团队让我们的 DBA 将OPTIMIZER_FEATURES_ENABLE参数从更改12.1.0211.2.0.4. 这解决了问题应用程序的性能问题,但导致了我上面描述的错误。为了验证,我已经能够通过更改此参数在单独的环境中复制同样的问题。我的 DBA 已向 Oracle 提交了一张票,以查看此问题。

作为一种解决方法,我可以对查询进行轻微更改以检索预期结果。具体来说,我结合Subquery1Subquery2把一些谓词Subquery1WHERE子句移到了JOIN(它们更合适的地方)。此更改编辑了我的执行计划(它的效率略低于之前列出的内容),但足以解决最初的问题。


原帖

首先,让我为这个问题的任何含糊之处道歉,但我正在处理一个机密的金融系统,所以我不得不隐藏某些实施细节。

背景

我有一个Oracle很久以前投入生产的查询,最近在升级11g12c. 据我(和我的生产支持团队)所知,此查询在此之前已经运行了一年多。

细节

查询过于复杂且效率不高,但这在很大程度上是因为我正在处理非规范化表(历史上以大型机建模)和来自上游系统的不良数据输入。为了处理复杂的业务情况,我利用了多个级别的子查询因子(WITH语句),然后我的最终语句将两个内联视图连接在一起。没有所有复杂谓词的查询的基本结构如下:

我有 3 张桌子Table1, Table2, Table3. Table1是一个处理表,由来自 的记录组成Table2

最后的查询非常基本:

问题

如果我编辑最终查询以删除第二个内联视图并评估A内联视图的输出,我会得到0 个返回的行。我已经手动评估了每个单独子查询的记录,并且可以确认这是预期结果。

同样,如果我编辑最终查询以仅生成“B”内联视图的输出,我会得到6 个返回的行。同样,我手动评估了数据,这完全符合预期。

现在,当将这两个子集(内联视图A和内联视图B)连接在一起时,我希望最终查询结果为 0 行(因为完整集和空集之间的内部连接不会产生匹配项)。但是,当我如上所述使用内部连接运行整个查询时,我得到了 1158 行

我已经查看了执行计划,但没有任何问题:

执行计划 1 执行计划 2

问题

显然,我做了一些事情来混淆 Oracle 优化器,并且更新的查询计划正在撤回与我提交的查询完全不同的查询。我最好的猜测是,所有这些临时视图都在同一个查询中浮动,我混淆了 Oracle 以评估它所依赖的某个集合之前的某些集合。

直到今天,我一直无法在WITH声明周围找到官方的 Oracle 文档,因此我对评估子查询的顺序从未完全有信心。我在搜索 SO(现在找不到)时确实注意到有人提到因子子查询不能引用另一个因子查询。我以前从不知道这是真的,但上面奇怪的输出让我想知道我之前是否只是幸运地使用了这个查询?

谁能解释我看到的行为?我是否试图用这个查询计划做一些明显不正确的事情?或者,是否有可能在 11g 和 12c 之间发生了一些变化,这可以解释为什么这个查询的行为可能已经改变了?

0 投票
1 回答
218 浏览

oracle - Oracle 12c 内联视图评估

很久以前,在一个很远很远的数据库中,一个开发人员编写了一个查询,他/她在该查询中依赖于谓词的写入顺序。

例如,

(解释计划建议to_number转换将适用于a.char_column

我认为不仅仅是设计这个“正常工作”(Oracle 11g)。但是,在 Oracle 12c 中运行时不遵守谓词的顺序,因此此查询因无效数字异常而中断。我知道我可以尝试通过使用以下ORDERED_PREDICATES提示来强制 12c 按顺序评估谓词

.. 或转换to_char用于比较的值之一。不利的一面是它to_char可以运行在一百万行上。我认为以下内联视图可能是更好的解决方案。我是否保证将首先评估内联视图?