问题标签 [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.
sql - 我希望我可以关联一个“内联视图”
我有一个病人表:
我有一个 PatientMeasurement 表(0 到多个):
我正在尝试创建一个类似于以下内容的结果集:
本质上,如果患者具有至少一个测量 A 值和一个测量 B 值,则患者的分子将具有 1。在此示例中,患者 1 具有 3 个 A 测量值和 2 个 B 测量值,因此分子为 1。患者2 有 2 个 A 测量值,但没有 B 测量值,因此分子为 0。患者既没有 A 测量值也没有 B 测量值,因此分子为 0。
到目前为止,我的查询是:
只要我不包括相关的日期限制(Recorded < dateadd(hh, 12, Admitted)),这将按预期工作。不幸的是,以这种方式关联“内联视图”在语法上无效。
这迫使我将 SQL 重写为:
我的问题:有没有更好、更有效的方法来做到这一点?
谢谢你的时间。
sql - 选择最早时间的用户并加入其他数据
我有一个 Oracle 数据库,我试图user
从满足某些条件的最早行(基于time
字段)中选择一个字段,但我不知道该怎么做。这是我的查询的要点:
我的问题是我不知道如何选择并仅从与WHERE 条件匹配的user
最早值的行中获取值。time
我认为我不能使用HAVING
,因为我没有在我的 SELECT 中执行任何聚合函数。“最早的值”条件只time
需要应用于字段的选择,即我希望并被选择用于字段的所有值。user
id
value
time
我在想我可以保留上面的 SELECT 语句,然后用另一个 SELECT 语句加入user
我想要的特定语句。
但是,这只能获得一个整体值,并且在我的第一个查询中每个 SELECTeduser
都应该有一个单独的user
值。id
如何SELECT user
通过其他查询的id
字段限制我的查询?这甚至是获得我想要的东西的正确方法吗?
java - oracle内联视图可以跨java语句使用而不是创建临时表
我有一个 java 程序执行 3 个具有相同内联视图的单独 sql - 每次执行 sql 时构建内联视图大约需要 20 分钟 - 有没有办法缓存或重用它?- 试图避免临时表解决方案,因为它需要委托给 plsql,因为 java 程序无权创建模式对象。ps:甲骨文10g
sql - 从 With 子句返回一行
我正在尝试创建一个返回值的函数。
在我的函数中,我有这个脚本:
回报是这样的:
http://img59.imageshack.us/img59/6733/tablei.gif
现在我想返回row 3
因为它有一个1
连续的 RightsMUT
我怎么能这样做?我试图用 2 来做,With
但 oracle 还不支持 2。
oracle - 我可以将内联视图与条件 API 一起使用吗?
NHibernate 是否支持使用标准的内联视图?谷歌似乎没有返回任何相关结果。这是我需要最好使用标准转换的查询。
我已经在 where 子句中转换了所有内容。那部分没有问题。这转化为类似的东西。
请注意,我使用的是 Lambda 标准扩展。或者,我想我可以创建一个额外的 Dto 来选择所有没有聚合函数的列,然后使用 Linq 来执行不同的计数/总和/最大/计数。
sql - 无法合并联合所有视图
我知道 Oracle RDMS 无法合并其中包含集合运算符的视图。我想知道为什么会这样。
例如,这个:
可以变成这样:
这两个查询是等价的,对吧?[编辑]
performance - Oracle 中的内联视图的性能问题
我有一个如下所示的查询,表 A、T、S 有大约 100 万行,而 P 有超过 1 亿行。我在这个查询中新引入了内联视图“temp”,它导致性能急剧下降。为 temp 检索到的数据几乎没有 50 行,而且这个内联查询在单独执行时会迅速运行。
自动跟踪统计显示“一致获取”的数量从 6 位数字显着增加,然后将 temp 添加到 9 位数字!此外,超过 90% 的 LAST_CR_BUFFER_GETS 用于“临时”视图。如果我将此视图中的数据提取到一个临时表中并将该表用作连接的一部分,则性能非常好,但该解决方案对我来说并不可行。
我知道这个问题非常笼统,但我想知道使用这个内联视图是否有什么小错误。内联视图不会提供与将这些数据放在临时表中相同的性能吗?有什么方法可以提示 Oracle 以有效的方式使用此视图,从而提高性能。
sql - 在连接上使用 Order By 和 Distinct (PLSQL)
我已经在一些表上编写了一个连接,并且我使用两个排序级别对数据进行了排序——其中一个是一个表的主键。
现在,对这些数据进行排序后,我想使用内联视图和 DISTINCT 子句从我的数据中排除任何重复项——这就是我要解决的问题。
我似乎能够对数据进行排序或区分它,但不能同时进行。有没有办法解决这个问题,或者我偶然发现了相当于不确定性原理的 SQL?
此代码返回排序的数据,但有重复
此代码删除重复项,但我失去了订单...
如果我尝试在外部选择的末尾包含“ORDER BY ada_id”,我会收到错误消息“ORA-01791: not a SELECTed expression”,这让我很生气!!
mysql - 有没有办法避免在 MySQL 中多次编写内联视图
考虑一个学生表和一个成绩表。成绩表包含学生学习的所有课程的成绩。我想找到平均成绩最高的学生。
我会使用 CTE 来解决这个问题,但似乎 MySQL 不提供 CTE。我想写一个查询来找到最大平均数的学生。等级,也避免编写查询,得到平均。所有学生的成绩,不止一次。
一个不起作用的查询如下(这可能会让我更了解我想要实现的目标):
上面的查询给出了错误:表临时不存在。
有没有其他方法可以找到最大平均数的学生。等级,避免写两次内联视图语句?
谢谢!
sql - SQL - 子查询和外部表之间的关系
问题
我需要更好地理解有关何时可以在子查询中引用外部表以及何时(以及为什么)这是不适当的请求的规则。我在尝试重构的 Oracle SQL 查询中发现了一个重复项,但是当我尝试将引用的表转换为分组子查询时遇到了问题。
以下语句适用:
不幸的是table2有时有重复的记录,所以我需要先聚合t2,然后再将它加入t1。但是,当我尝试将其包装在子查询中以完成此操作时,SQL 引擎突然无法识别外部表。
我知道这些是根本不同的查询,我要求编译器将它们放在一起,但我不明白为什么一个会起作用,而另一个不起作用。
我知道我可以在我的子查询中复制表引用并有效地将我的子查询与外部表分离,但这似乎是完成这项任务的一种非常丑陋的方式(代码和处理的所有重复)。
有用的参考资料
我发现了对 SQL Server 中子句执行顺序的精彩描述:(INNER JOIN ON vs WHERE 子句)。我正在使用 Oracle,但我认为这将是全面的标准。子句评估有一个明确的顺序(首先是 FROM),所以我认为任何出现在列表后面的子句都可以访问之前处理的所有信息。我只能假设我的第二个查询以某种方式改变了排序,因此我的子查询被评估得太早了?
此外,我发现了一个类似的问题(在子查询中引用外部查询的表 ),但是虽然输入很好,但他们从未真正解释过为什么他不能做他正在做的事情,而只是为他的问题提供了替代解决方案。我已经尝试过他们的替代解决方案,但这给我带来了其他问题。也就是说,带有日期引用的子查询是整个操作的基础,所以我无法摆脱它。
问题
我想了解我在这里做了什么......为什么我的初始子查询可以看到外部表,但在我将整个语句包装在子查询中之后却看不到?
也就是说,如果我想做的事情无法完成,那么重构第一个查询以消除重复的最佳方法是什么?我应该两次引用 table1 (所有需要的重复项)吗?还是(可能)有更好的方法来解决这个问题?
提前致谢!
- - - 编辑 - - -
正如一些人推测的那样,上面的这些查询并不是我正在重构的实际查询,而是我遇到的问题的一个例子。我正在处理的查询要复杂得多,所以我很犹豫在这里发布它,因为我担心它会让人们偏离正轨。
- - - 更新 - - -
所以我由一位开发人员运行了这个,他对为什么我的子查询失去对 t1 的访问权有一个可能的解释。因为我将此子查询包装在括号中,所以他认为在评估我的表 t1 之前正在评估此子查询。这肯定会解释我收到的 'ORA-00904: "t1"."id": invalid identifier' 错误。它还表明,就像运算的算术顺序一样,在语句中添加括号会在某些子句评估中赋予它优先级。如果他们同意/不同意这是对我在这里看到的情况的合乎逻辑的解释,我仍然希望专家参与进来。