问题标签 [cross-join]
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.
cross-join - 在 SQL 2005 中使用 like 交叉连接
下面是两个查询。我在 Access 中得到正确的返回,但在 SQL 中没有返回。我在 SQL 版本中的语法是否错误?奇怪的是,即使我省略了 WHERE 语句的第二部分,返回的值也没有意义(即姓氏 = tblx.Last Name = Hull / tbly.Last Name = Morris)...有什么想法吗?
--SQL 2005
SELECT tblx.[Last Name], tblx.[First Name] FROM tblx cross join tbly WHERE (tblx.[Last Name] Like '%[tbly].[Last Name]%') AND (tblx.[First Name] Like '%Right([tbly].[First Name],3) %')
--访问2007
SELECT tblx.[Last Name], tblx.[First Name] FROM tblx cross join tbly WHERE (((tblx.[Last Name]) Like " " & [tbly].[Last Name] & " ") AND ((tblx .[First Name]) Like " " & Right([tbly].[First Name],3) & " "))
sql - SQL Server 2008 使用 SUM() OVER(ORDER BY...)
我正在尝试使用 CTE 和 CROSS JOIN 结果集。我想总结当前行的 4 行。我发现的在线示例不使用 CTE,仅使用新创建的表(http://sqlandme.com/2011/08/17/sql-server-denali-over-rows-range/)。语法应该可以工作,但我收到一条错误消息,提示“'ROWS' 附近的语法不正确”。
使用以下语句的示例输出如下: SUM(y) OVER(ORDER BY x ROWS 4 PRECEDING) sum
XY 总和
有没有人对查询不正确有任何建议?提前致谢。
sql - 为单个条目显示多个类别
我有以下表格:
- 具有 ID 列、描述列和类别父 ID 列的类别表如下:
在我的应用程序中,客户可能有零个或多个类别。我想显示客户拥有的部分或全部类别。例如,如果我选择显示所有类别,我希望有下表:
我还应该能够显示某些类别,例如仅标题和信用卡: p>我尝试使用 LEFT JOIN 来做到这一点,例如:
但这并没有帮助,因为我得到了重复的行。
sql - SQL:通过集合论匹配记录
我最近一直在为一个复杂的 SQL 查询而苦苦挣扎。
我有以下表格:
它基本上是一个用户为每个属性选择值的项目。每个属性可以是单值或多值。例如,用户可以为属性 {ID=1,title=Hobbies} 选择多个值,但必须为属性 {ID=2,title=HairColor} 选择单个值。
使用另一个表 - [dbo].[Search_Property_Values_User_Linkage] - {UserID,PropertyID,valueID} 我正在选择我想要的属性并且我希望找到匹配的用户。但是,如果我没有为 HairColor 选择一个值(或多值),我应该得到所有用户(因为我不想按 HairColor 过滤)。
到目前为止这很容易,但我似乎无法解决的问题是前面有多个值或没有用户定义的值的情况。例如,我希望所有具有 HairColor=Brown 和 Hobbies IN(basketball,football) 的用户。
我可以检索与其中一个术语匹配的所有用户(以及具有其他属性的用户,因为我没有选择过滤它们),但我不能只获取完全符合我的条件的用户。
要将代码转化为文字,假设我需要所有用户:
- 匹配我选择的所有属性值
- 可能有其他属性,例如 EyesColor,但由于我没有选择过滤值,它们也可能会被检索到。
- 可能根本没有设置任何属性,但由于我没有为此属性选择值,所以它们是有效的!
- 将所有选定的属性作为组匹配,而不仅仅是我选择的一个属性(喜欢篮球但头发颜色为“红色”的用户是无效的!
我遇到了一个解决方案,在该解决方案中,我创建了一个虚拟表,该表按位“完成”未选择的值。例如(不是实际代码):
我基本上 CROSS-JOIN [Property] WITH [User]
和 LEFT-OUTER-JOIN 其余的表来匹配选择。
我让所有用户和他们匹配到一个属性。这还不够好,因为我得到了棕色头发的用户,喜欢篮球/足球的用户,但没有同时匹配两者的用户(当然还有我未定义的任何其他属性)。
这很重,但这是我到目前为止分析问题的内容。
我将不胜感激任何帮助。我想我在 10 年前的数学课上遗漏了一些东西……
编辑:数据库图片:http: //i51.tinypic.com/2n1cfwg.png
sql - 交叉加入!在 SQL Server 中,但我真的只需要大约三分之一的行吗?
好的,所以我不确定我是否以正确的方式进行此操作。但我的情况是我有一个存储过程,我想使用它所需要的所有可能的输入组合来测试。
假设我有一个带有两个参数的存储过程,如下所示:
现在在我的例子中,ProfileID 意味着类似于人的东西,而 RoleID 意味着类似于系统角色的东西。我故意在这里有点笼统。关键是,我有大约 60,000 个已定义的人员,以及大约 600 个已定义的角色。
不幸的是,我正在测试的系统很复杂,就像糟糕透顶的复杂,我真的需要通过它的步伐运行这个程序。
好的,到目前为止和我在一起吗?希望你是;查看此 sql 以生成我最终将传递给存储过程的数据:
这实际上非常好,但问题是它需要永远运行,坦率地说,我不需要这两个值的每一个排列。
所以我尝试像这样限制结果集:
但是哎呀!这限制了最终结果,所以我最终得到的结果只有差不多 2-3 个角色(取决于我传递给顶部动词的内容),并且每个人都有一个 ProfileID。
我想要的,我的目标,是为我拥有的所有角色(大约 600 个)获得结果,并且对于每个角色,可能只使用 ProfileID 的一半而不是整个 shebang。
那我问的有意义吗?
join - Mondrian / OLAP 是连接大尺寸/集合的错误工具吗?
总结:我见过的大多数 MDX 连接示例都涉及连接相对较小的集合,例如每个集合包含数十或数百个项目。但我发现自己也想尝试加入(特别是“非空加入”)集合,每个集合都有数千或数万个项目,但到目前为止效果不佳。我想知道这是否可以工作,或者我是否需要考虑使用 Mondrian/OLAP 以外的东西。
具体来说,我有一个记录公司 (n=7000) 和客户 (n=27000) 之间交互的多维数据集。目前,公司和客户都是完全扁平的层次结构;有所有级别和个人公司级别,中间没有其他级别。有一个中心事实表,以及针对公司和客户的单独维度表。
我的用户至少似乎希望获得这些方面的摘要报告,汇总公司和客户之间的所有非空交互:
但是这个查询及其变体在我的测试蒙德里安设置中不起作用。要么我得到一个 OutOfMemoryException(在 2GB Java 堆上),要么 Java 似乎在 mondrian.rolap.RolapResult$AxisMember.mergeTuple(TupleCursor) 中花费了不可思议的时间。(如果有帮助,我可以提供更完整的堆栈跟踪。)“不可能的长”是指 Java 在我放弃之前会在查询中苦苦挣扎几个小时。
我最初预计上述查询可以正常执行,因为从概念上讲,只需按照以下几行执行 SQL 查询就可以有效地完成:
(实际上,如果我直接在 MySql 中执行这样的操作,执行时间不会超过 15 秒。)
但从调试日志来看,蒙德里安似乎并没有尝试这种优化。相反,它似乎是在内部进行连接,并且最终速度特别慢。我在我的 mondrian.properties 中设置了 mondrian.native.crossjoin.enable=true,但这似乎不是 Mondrian 能够“使本地化”的连接类型之一。(如果我打开 mondrian.native.unsupported.alert=ERROR 那么我会得到相应的异常。)
我想知道是否需要阻止我的用户尝试加入如此大的维度/集合,或者 Mondrian 是否可能不是我在这里寻找的工具。但也许我只是做错了什么。
sql - 交叉连接过滤器
我需要为查询“制造”记录,但同时限制从“查找”表返回的值列表。
有没有办法使用“过滤”交叉连接而不必使用内联视图?
此语法按预期工作(我得到了预期的结果):
不幸的是,如果我使用这种方法,我需要将 Command 对象与 Crystal Reports 一起使用,而不是使用其原生的“Visual Linking Expert”。命令对象激怒了我。
向 WHERE 子句添加过滤器会导致相等连接,这在这种情况下是不可取的。
sql - SQL - 通过多个表查询选择连接
情况如下:
我搜索 ID 为 ( empr
. empr_cb
) 且有账单要支付 ( transactions
. montant
) 的人,这指的是transactions
。compte_id
这与comptes
. id_compte
这是指comptes
. proprio.id
这与empr
. id_empr
这将为我们提供人员 ID ( empr
. empr_cb
)
我试过这个,但我不知道要设置什么连接(交叉连接?):
任何想法如何放置连接?
mysql - MySQL 从表 2 中选择与表 1 相同
我有两张桌子
“雇主”:
“职位”:
我需要显示表,其中包含雇主名称、职位名称、工资、相关职位名称、Rel Pos 工资、Rel Pos 雇主
现在我有查询:
下一个 rquest 不起作用,但给出了我需要的想法:
sql - 临时表上的 SQL 交叉连接结果缓慢
已将以下代码添加到我的 SQL 查询中:(注意缩减版)
运行时间从大约 10 分钟到大约 1 小时,有人对为什么会这样有任何建议吗?没有这个交叉连接的结果大约是 46,000,之后又带回了额外的 231 行(任何被归类为“非-cumulative' 根据查询。