问题标签 [outer-apply]

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 回答
13835 浏览

sql - 实体框架和交叉/外部应用

我想为 Entity Framework 查询创建一些测试用例,这些查询肯定会生成包含 CROSS APPLY 或 OUTER APPLY 运算符的 SQL 命令。

有人可以展示出现此类 SQL 查询的典型场景吗?

0 投票
2 回答
17787 浏览

sql-server - 在哪里使用外部应用

主桌

详细信息表

LEFT JOIN使用和时我得到相同的结果OUTER APPLY

LEFT JOIN

OUTER APPLY

我应该在哪里使用LEFT JOIN以及我应该在哪里使用OUTER APPLY

0 投票
1 回答
267 浏览

sql-server - OUTER APPLY 中的 SQL Server 错误处理

我不是 T-SQL 方面的专家,我遇到了一个问题(或者更确切地说,我没有问题,但我真的认为我应该),希望您能解释一下原因。

我有一个存储过程(SQL Server 2012),我认为它应该给我一个错误 - 但它没有。我的 google-fu 让我失望了,我没有发现任何东西可以为我指明正确的方向。总之,我们使用以下表格:

存储过程会生成一份报告,其中显示用户及其在当前假日年度的假日余额。为此,我使用了 OUTER APPLY:

这工作得很好,它正是我想要的。问题是这样的:

昨天,这个存储过程被一个正在运行我们应用程序旧版本的客户所接受。在此版本中,HolidayYear 未链接到用户,而是所有用户共享同一个 HolidayYear。因此,HolidayYears 表没有 'UserID' 列

所以我的期望是这个存储过程会抛出一个错误,如果我在隔离中执行SELECT包含的OUTER APPLY,它确实会抛出预期的错误(无效的列名'UserID')。

运行报告时实际发生的情况是返回的行没有错误,但是与用户余额相关的字段为 NULL(如果OUTER APPLY未能返回假期年的记录,您会期望,然后将其返回JOINHolidayYearUserBalances表中。

我做了一个疯狂的假设,即 T-SQL 会抑制OUTER APPLY语句中的错误。任何人都可以确认或否认这一点,或提供任何可能帮助我解决这个难题的信息吗?

0 投票
2 回答
10209 浏览

sql-server - Oracle 中的 OUTER APPLY 有什么替代方案吗?

在以下示例中,我将tbA.ID传递给tbC查询。在这种情况下,我使用了 SqlServer 的 OUTER APPLY 运算符。

在 Oracle 中,我们没有 OUTER APPLY 运算符。那么,如何在不修改查询结构的情况下将值(tbA.ID)从左侧查询传递到连接的右侧查询(tbC)?

Oracle 中的 OUTER APPLY 有什么替代方案吗?

0 投票
1 回答
3304 浏览

sql - 案例陈述作为 vals Outer Apply

我正在尝试将计算列添加到表中。目前,我有以下 CASE 语句在 SELECT 语句中构建计算列,

- 但我想使用此列来确定后续列(所以……添加计算列在某种程度上是一种解决方法,以避免我不确定我能弄清楚的复杂 CTE - 让我知道 CTE 或函数是否更好走的路)

--- 我希望 CASE 语句成为表本身的计算列

0 投票
2 回答
860 浏览

sql - 用 INCLUDE 索引 OUTER/CROSS APPLY 的 WHERE 子句

SELECT * from Table1 WHERE Field1 = 'abc'我已经读过在使用 WHERE 子句来限制返回的记录(即)时应该使用索引列。

使用 时是否适用此规则APPLY,如

SELECT t.Field1,x.Field2 from Table1 t OUTER APPLY (select * from Table2 x WHERE t.Field1 = x.Field1?

换句话说,在 Table2.Field1 上放置索引会加速上述查询吗?

对不起,如果答案很明显,我对 OUTER 和 CROSS APPLY 的机制没有深入的了解,只是它们可以用来代替 JOIN。

编辑基于这个线程( Hard and Fast Rules for include columns in Index ) 的一个更好的问题是,我是否应该对我从另一个表中提取的所有列使用 INCLUDE ,如果是这样,它是否更有效使用OUTER APPLY (select Field1,Field2而不是OUTER APPLY (select *

0 投票
1 回答
930 浏览

sql-server - OUTER 附近的语法不正确

非常令人失望,但有些人无法破解为什么我会收到此错误?

消息 156,级别 15,状态 1,第 3 行
关键字“OUTER”附近的语法不正确。

消息 170,级别 15,状态 1,第 9
行第 9 行:“LatestNote”附近的语法不正确。

0 投票
2 回答
66 浏览

sql - MS SQL SERVER 2008 RS OUTER APPLY 和空 RS

我的第一个问题长期潜伏在这里。

我有以下表格:

  • 账户
  • 电子邮件
  • 电话号码

我想从 Accounts 中获取所有内容,并且对于每个 Accounts 记录,从其中 Accounts.ID = Emails.AcctID 或 Accounts.ID = PhoneNumbers.AcctID 的电子邮件和电话号码中获取最新的 Top 1。

我的 RS 目前是: SELECT ACCT.* FROM Accounts AS ACCT OUTER APPLY (SELECT TOP 1 E.* FROM Emails AS E WHERE E.E_AcctID = ACCT.ACCT_ID ORDER BY E.E_ID DESC) EM OUTER APPLY (SELECT TOP 1 PH. * FROM PhoneNumbers AS PH WHERE PH.PH_AcctID = ACCT.ACCT_ID ORDER BY PH_ID DESC) PH WHERE ACCT.ACCT_Status > 2;

问题是并非每个帐户在电子邮件或电话号码中都有相应的记录。

所以,一些 APPLY RS 是空的,然后我得到这个 RS 错误: ADODB.Recordset error '800a0cc1' 在与请求的名称或序号相对应的集合中找不到项目。

知道如何解决空记录集吗?

提前谢谢了。干杯,诺亚

0 投票
2 回答
482 浏览

sql-server - 将 OUTER APPLY 与 Codeigniter 活动记录一起使用

是否可以将 SQL ServerOUTER APPLY与 Codeignter 的 Active Record 一起使用?

0 投票
2 回答
292 浏览

sql-server - 使用实体框架将子查询表连接到具有外部应用的表函数

我创建了一个 SQL Server 查询,该查询通过获取不同的案例 ID 列表并将它们连接到fnGetRelatedCases表函数来获得正确的结果。但是,我无法创建执行相同操作的实体框架查询。

SQL 服务器:

下面的查询几乎可以工作,但它没有通过不同的案例 ID 列表加入。

实体框架:

我需要将一个不同的案例 ID 列表传递到fnGetRelatedCases表函数中,但我无法正确加入,因为所有案例 ID 都被加入。