问题标签 [multiple-resultsets]

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

sql-server - T-SQL 返回多个结果集

我希望这不是一个太尴尬的问题,但到目前为止我的搜索还没有对事情有太多的了解。如果之前有人问过,我很抱歉。

我需要编写一个存储过程来运行一个简单的查询

然后,对于每个foo执行另一个查询,并将每个查询的结果作为单独的结果集返回。

我不需要返回初始查询的结果,只需要针对 的每个值执行第二个查询的结果foo,并且我不希望它们组合成一个结果集,尽管它们都有相同的列(它简化了如果我可以返回多个结果集,则表示逻辑很多)。

这是在 SQL-Server 2008 R2 上。

谢谢你。

0 投票
1 回答
573 浏览

php - MYSQL + PDO nextRowSet 循环一个太多次?

我正在努力使用返回多个结果集的 MYSQL (5.5.35) 存储过程,我想知道是否有人可以解释出了什么问题。SQL 如下所示

然后我有一些PHP可以做到这一点......

人们希望在浏览器中看到以下内容

但相反,它会运行 7 个结果集,这又会导致异常

我在这里错过了一些非常简单的东西吗?

0 投票
1 回答
69 浏览

mysql - MySql 第一个结果前后结果集

我有一个糟糕的查询,我使用 IFNULL 来确定我的结果集之前和之后是否有结果。结果集由一段时间决定,见 5 月 5 日至 5 月 10 日。这段时间在我的应用程序中可视化为折线图。我想要 5 月 5 日到 5 月 10 日之前和之后的第一个结果,如果有的话(因此使用 IFNULL),因为我希望 grahp 的行是连续的。如果在可视化时间段之前有结果,我需要开始从该点画线,与图形区域相交,尽管它不在屏幕上。

请参阅图像以获取视觉示例。第一个图不包括可视化周期之前和之后的测量值(框表示实际显示给用户的图形区域),第二个图确实与 Y 轴相交,因为在显示周期之前有一个测量值,并且一个之后。

在此处输入图像描述

现在到目前为止一切顺利,我糟糕的查询有效。也就是说,如果我只想获得一个实体的测量值。但是现在我想在一个查询中为一组实体获得这个结果,就性能而言。更好的查询一次从 200 个实体获取测量值,而不是每个实体查询 = 200 次。所以我想我将查询从 更改WHERE Entity.Id=1WHERE Entity.Id IN (1, 2, 3, 4)。现在的问题是,包含图表之前和之后的测量值的时期是通用的,而不是按实体及其测量值进行评估。

下面是每个实体的查询(在我的特定情况下是一头牛)

这是我尝试在一个查询中查询所有奶牛及其测量值

哦,鹿,我在 SO 上发布了一个看起来多么糟糕的问题。希望我说清楚了。谢谢!

0 投票
1 回答
8993 浏览

java - JDBC: How to clear the contents of a result set before using it again?

I want to clear the contents of a result set (but nothing should happen to the underlying database) before using it again to execute a new query?

Is there any method which will delete its data (but do nothing to the underlying database, that's important), so that I can use the same resultset again to retrieve data from another query?

A quick search in the API documentation gave me the idea that deleting things through a method like deleteRow() will actually delete data from the database as well. I just want to reset/refresh/clear the resultSet, so that when it is again used to get results of another query, it should contain data from that query only, and not the previous one.

Or does it automatically remove its contents itself once we have retrieved them from it (through methods like ResultSet.getInt(), ResultSet.getString() etc.)

EDIT:- Can we create new result sets for executing each query in the same method?

0 投票
0 回答
262 浏览

sql - Oracle 返回多个记录集

如何在不使用游标的情况下从过程中返回多个记录集。我经常使用游标进行查询,因为你知道游标累了系统。有没有办法获取多个数据?

0 投票
1 回答
376 浏览

sql - 从 SELECT 查询中获取多个结果集

SELECT我在 postgresql 上有一个大表,如果可能的话,我想获取多个结果集作为查询的输出?

我的表如下所示:

我想要的是:

所以我想知道是否可以用参数替换google.com以获得每个dns_name( google.com, facebook.com, yahoo.com, ...) 的结果集。

不要犹豫任何问题!

0 投票
1 回答
196 浏览

php - php mysql join 结果集重复数据

我已经阅读了几乎所有与我的查询相关的其他帖子,但找不到明确的答案 - 如果这已经得到回答,我深表歉意。

基本上我有一个产品表和一个图像表,一个产品可以有很多图像。据我了解,与运行多个查询相比,使用单个查询获取所有数据在性能方面会更好。

我目前正在使用一个左连接查询,它工作得很好,但对我来说似乎效率低下。

我的结果集有很多重复数据(我知道这就是我要的),并且是由于“产品”表包含 50 个(ish)列,而“图像”表只有 3 列,所以我的结果集看起来像这个:

I_ID 是 images 表中的主键,是“products”表中的一列,表之间存在关系。

有些产品可以有 10 或 15 张图像,这些图像将复制“产品”信息 10 或 15 次,对我来说这似乎是错误的。在不必要的时候拥有如此多的重复数据。

我想我真正要问的是:这是最好的方法还是我应该有 2 个查询 1 来根据它的 ID 查找产品,然后另一个来查找与查询 1 中的产品相关的图像。

我期待一对多的关系会返回如下内容:

我还认为最好得到一个多维数组,它看起来像:

但是我一辈子都无法弄清楚如何像这样取回数据-请帮助

0 投票
0 回答
836 浏览

python - pandas 可以处理多个结果集吗?

假设数据库和驱动程序支持 nextset(),有没有办法让我使用 pandas 来处理多个集合?我只和熊猫一起工作了几天,所以我不确定我期望它是什么样子。我当前的工作流程是df = pd.read_sql(sql_statement, db)df在我连续处理它们时将它们分成多个部分。如果我能以某种方式使用cursor.nextset(),我将能够显着简化存储过程。

0 投票
1 回答
9279 浏览

hibernate - Hibernate JPA、继承和存储过程返回多个结果集

我正在尝试使用 Hibernate 4.3.5.Final (JPA 2.1)从存储过程中使用多个结果集——但我无法让它工作。我正在使用 Sql Server 2008。

存储的 proc 结果集有不同的列,有一些共同点,但不足以将它们组合成一个结果集。通用性用 Java 表示,具有继承层次结构。我一直在使用 TABLE_PER_CLASS 的 InheritanceType 策略,即使存储过程结果集中确实没有显式。尽管如此,我还是需要做一些事情来让 Hibernate 为一个结果集的 X1 类对象和另一个结果集水合 X2 类的对象。

我简化的 Java 层次结构如下:

使用@NamedStoredProcedureQuery,

我构造 StoredProcedureQuery 并执行它,

Hibernate 抛出 WrongClassException 异常,

异常:org.hibernate.WrongClassException:对象 [id=512565] 不属于指定的子类 [com.xyz.search.jpa.X2]:加载的对象属于错误的类 com.xyz.search.jpa.X1

查看从休眠生成的 DEBUG 语句,似乎我的 @DiscriminatorValue() 注释没有得到正确处理。即使我为 X1 指定了@DiscriminatorValue(value="1"),hibernate 仍然顽固地使用 2 为 X1 生成 SQL(2 作为 X1 的 clazz_)这可能是问题的原因,也可能不是,我不确定然而。

有没有办法使用 Hibernate / JPA 和存储的 procs 返回多个结果集?

我究竟做错了什么?

提前致谢!

(如果有人需要我的测试代码中的其他信息,请 plmk。:)

附录(已编辑):

根据 zxcf 的建议,我将 @NamedStoredProcedureQuery 修改为:

并添加了一个 SqlResultSetMapping 如下:

通过这种修改,我得到了一些非常奇怪的行为。使用 List x = spq.getResultList() 依次处理每个结果集表明 x 实际上是一个 Object[] ,其中结果集中的每一行都已映射到每个类 - 即结果集 1 的第 1 行有一个映射到 X1、X2、X3 和 X7。这根本不是我所期望的——我认为resultSets 将被一个一个映射,即第一个resultSet 映射到X1,第二个映射到X2,等等,但这不是正在发生的事情。

2014 年 7 月 10 日更新——

在 XBase.java 中,

在 X1.java 中,

在 X2.java 中,

第一个结果集('1' as dc适用于所有行)已正确处理,但是当尝试处理'2' as dc适用于所有行的第二个结果集时,我得到了 ClassCastException。

java.lang.ClassCastException:com.xyz.search.jpa.X1 无法转换为 com.xyz.search.jpa.X2

我正在尝试将从第二个 getResultList() 返回的对象设置为 X2,但显然休眠 JPA 正在为 X1 补水,即使对于具有 dc='2' 的行也是如此 - 显然没有注意鉴别器列来确定要实例化的内容。

存储过程结果集1:

存储过程结果集2:

上面的 sp 结果具有代表性 - 为了清楚起见,我删除了许多其他列。还有 5 个额外的结果集,每个都有不同的列集和不同的 dc 值:1,2,3,4,5,6,7

一些(可能是最终的)想法:

我越深入,就越清楚 Hibernate 4.3.5 Final 的设计目的是不能充分处理来自单个存储过程的多个结果集。一般来说,不能保证来自给定存储过程的两个结果集会有任何共同点,甚至可能没有相同的主键。从存储过程生成多个结果集的决定可能是由效率驱动的——例如,在 SQL 端可能需要相同的预处理步骤(例如,临时表生成)来生成几个不同的结果集。

然而,JPA 中为每个 SQL 行实例化不同类的唯一工具是鉴别器字段,鉴别器仅适用于继承,这至少预设了一些共性。如果没有公共标识符、主键,那么 Java 类层次结构就无法工作。

而且,即使可以识别一个公共的@Id 字段,来自不同结果集中的具有相同 Id 字段值的行也将被合并到现有对象中,即使该行的其余部分完全不同。如果缓存中已经存在具有该 ID 的对象,Hibernate 显然会忽略鉴别器字段。

即使是 MappedSuperclass 方法也需要一个公共的 Id 字段。而且,此外,无法为子类指定 Table(name="???"),因为结果集不是可以引用的命名表。

0 投票
3 回答
10038 浏览

hibernate - 将 JPA 与返回多个结果集的存储过程一起使用

是否可以使用 JPA 在 SQL Server 中处理具有不同列的多个结果集?这样做的方法(或最好的方法)是什么?

我目前正在使用 Hibernate 4.3.5 Final 和 JPA 2.1、SqlServer 2008。

我当前方法的传奇可以在这里找到:Hibernate JPA、继承和存储过程返回多个结果集

但这显然不是正确的方法。如果有人知道如何使这项工作,请告诉我。谢谢!!