问题标签 [derived-table]

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 投票
1 回答
332 浏览

mysql - 在派生表上具有复杂连接的 Active Record 查询?

我正在使用 Ruby、Sinatra 和 MySQL。我有四张桌子。

联系人(客户):

订单:

订购产品:

和产品:

我编写了以下 SQL 查询以获取以联系人为中心的统计信息。

我想把它完全翻译成 Active Record 格式。我能够正确地转换和运行它,但是下面的内部连接让我望而却步,我不得不直接粘贴 SQL:

我只报告翻译后的 SQL 查询的一部分,因为派生表上的连接翻译对我来说最重要。我发现它远没有那么优雅和可读性,例如:

任何帮助,将不胜感激!

谢谢,卢卡

0 投票
0 回答
242 浏览

sql - 游标中的 CTE 给出“连接正忙于处理另一个命令的结果”错误,而派生表没有

我最近在从使用 CTE 的查询上的游标中获取时遇到了错误。

“[Microsoft][SQL Server native Client 10.0]Connection is bust with results for another command”

该错误发生在在每次提取迭代中执行的后续游标上。

我能够通过用派生表替换 CTE 来解决错误。

我需要知道为什么派生表工作正常,而 CTE 失败,以及我在 CTE 示例中是否做错了什么。

原来的查询比较复杂,涉及到多个join,但基本上有以下几种:

有问题的代码将使用上述语句循环遍历游标,并且对于 FETCH 的每次迭代,它将执行第二个游标:

在 FOREACH 语句期间从应用程序打开的任何游标都会失败,并出现我上面提到的错误。

但是,如果我删除 CTE 并使用派生表,我不会收到错误并且一切正常。

0 投票
0 回答
653 浏览

mysql - 具有分组和派生表的多个联接

我有四个 MySQL 表:contacts、orders、ordered_products 和 products,我正在尝试编写一些报告查询。这是其中之一:

一切都按预期工作,尽管如果我添加(并且我需要添加)另一个 [LEFT|INNER] JOIN(例如:INNER JOIN orders ON orders.contact_id = contacts.id),行 SUM 总数搞砸了(他们似乎根据订单数量重复,三份...)。我想问题可能是第一个连接派生表中的多个分组。然而它却让我望而却步。在这里,您可以找到上述查询的略微变体。即使是这个微小的修改也能够触发“问题”:

上述路径是死胡同。在@Gordon Linoff 的帮助下,我找到了更好的方法。报告目标之一是在客户/联系人基础上计算总产品成本金额和总产品销售金额。我专注于通过两个单独的连接来做到这一点。似乎一个就足够了(避免包括几次几乎相同的表):

谢谢,卢卡

0 投票
2 回答
862 浏览

sql - SQL Server 中的派生表

我有这两个疑问。我不知道如何将它们组合在一起以制作派生表。我假设将第二个查询用作主查询,并在主查询的 FROM 子句中使用第一个查询。

0 投票
1 回答
373 浏览

sql - 索引是否保留在派生表上?

假设我有一个大表,其中包含来自各种文件的基因组位置,如下所示:

我想将 1 个文件的内容与所有其他文件的所有内容进行比较,以查找重叠。所以我使用派生表。

现在,如果我按该顺序在 file_id、chromo_id、位置上添加复合索引,派生表是否能够使用该索引?(使用 Postgres)

0 投票
2 回答
911 浏览

sql - CTE top-order by 子句并不总是有效

我有以下 T-SQL 语句:

它根本不是返回相同的结果。我无法理解方式,但有时 CTE 中的 T-SQL 语句没有返回正确的值是因为产生了不同的结果,不是每次,而是有时(更准确地说,我得到三个不同的结果) .

如果我只执行以下语句:

我每次都得到相同的结果。如果我使用派生表也没有问题:

谁能解释为什么 CTE 每次都没有返回正确的结果?

0 投票
3 回答
161 浏览

mysql - 派生表中的 MySQL 联合 (related_id=a AND related_id=b) 或 (related_id=z)

我有以下表格:users, tags, tags_data.
tags_data包含tag_iduser_id列以将1 个用户与多个标签的关系链接users起来。tags

tag_id列出具有10011003 tag_id1004的所有用户的最佳方式是什么?
编辑:我的意思是,也可能有其他相关的标签,只要肯定有 1004 OR (1001 AND 1003)。

目前我有两种方法可以做到这一点,都UNION在派生表中使用 a ,无论是在FROM子句中还是在INNER JOIN子句中......

或者

还有其他表,我将对此进行LEFT JOIN讨论。表中有 50k+ 行,users表中有 150k+ 行tags_data

这是将数据导出到另一个系统的批处理作业,因此不是最终用户运行的实时查询,因此性能并不是非常关键。但是,我想尝试并获得最好的结果。派生表的查询实际上应该非常快,并且在我向返回给客户端的结果添加进一步的连接、函数和计算字段之前缩小结果集的范围是有意义的。稍后我将在更大的数据集上运行这些,以查看是否存在任何性能差异,但运行EXPLAIN显示几乎相同的执行计划。

一般来说,UNIONs除非绝对必要,否则我会尽量避免。但我认为在这种情况下,我几乎必须有一个UNION定义的地方,因为这两个实际上不相关的标准。

我可以在这里使用另一种方法吗?
对于这类问题,是否有某种特定的数据库术语?

完整示例架构:

0 投票
2 回答
43 浏览

mysql - SQL 数据库函数

我试图用它来计算每个用户贡献了多少推文,并将其放在一个名为 numTwt 的新列中:

但它似乎不起作用。

0 投票
1 回答
2161 浏览

database - SQLite3 数据库中的派生字段

各位晚上好,

今天想请教一个关于SQLite3中派生字段(也称为计算字段)的问题。

利用存储在我的数据库“重量”和“距离”中的两个值,我知道可以利用它们来执行计算,以使用需要两者的公式返回我想要的值。

但是我想知道是否有一种方法可以通过 SQLite 编码设置一个字段来自动生成自己的值,所以一旦他们输入了重量和距离并执行了计算,“卡路里燃烧”的属性字段将是人口稠密。

或者,我在几个网站上阅读过,由于 3NF 要求,3NF 数据库的派生字段不应存储在数据库中,如果是这样,我将不得不在我希望检索值时继续执行选择计算。

谢谢

JHB92

0 投票
2 回答
852 浏览

mysql - JOIN 语句中双嵌套派生表中的未知列

在我的数据库中,有两种类型的图像:挑战和答案。它们都有 lat/lng 位置列。在此查询中,我希望选择用户最近通过 INNER JOIN 创建的挑战或答案。

(这背后的业务逻辑:我们基本上想要获得一个用户列表,其中包括用户的最后一个已知位置,该位置由他们最近的挑战答案决定 - 以最近的为准。如果用户没有最后一个已知位置,它们不应包含在此列表中。)

我得到[Err] 1054 - Unknown column 'U.Id' in 'where clause'

我似乎无法从派生的“LastImages”表(或任何合适的术语)中引用用户表(别名 U)。

任何人都可以帮忙吗?我尝试了其他方法,但没有一个能满足我的所有要求:

  1. 仅当用户至少有1 个挑战或 1 个答案时才返回一行(因此是 UNION)
  2. 最新的(由 ChallengeImage.CreatedOn 和 AnswerImage.CreatedOn 确定)图像将用于连接

谢谢!