首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个结果集中连接或合并2个sql查询的结果

问如何在单个结果集中连接或合并2个sql查询的结果
EN

Stack Overflow用户
提问于 2009-08-20 06:57:27
回答 2查看 2.4K关注 0票数 0

我有两个表(两个单独的SQL查询的结果,这个结果将由List<Object>包含,其中每个对象代表数据库的一行)。

Table_1

  • Dimension_1
  • Dimension_2
  • Fact_1

Table_2

  • Dimension_1
  • Dimension_2
  • Fact_2

我想在RESULTSET中加入这两个结果

Table_Resultant

  • Dimension_1
  • Dimension_2
  • Fact_1
  • Fact_2

由于查询系统中的部分的复杂性,我无法对结果表发出单个查询,由于这些限制,每次都必须将两个结果列表<object>(table_1 & table_2)加入到table_resultant中。

解决这个问题的可能方法是什么?

在MYSQL中创建临时表(加入两个结果集)是否是一个潜在的解决方案?是的,我可以在Mysql中创建临时表。

是的,允许在2“结果”上使用“复杂”SQL来获取resultant_table。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-20 07:33:28

所以你可以做工会但不加入?您是否需要在两个源表中匹配Dimension1和Dimension2的值?或者,如果您只需要从两个表中获取所有值并将它们合并到结果表中(在这种情况下,是的话,Union可能就能做到这一点)

您需要一个完整的外部联接,假设这在您的查询系统中是不可能的,下面是解决方案的大纲,假设:

代码语言:javascript
复制
1. Fact1 and 2 are >=0 ints and 
2. no row in tablex where factx is null.

Select dimension1,dimension2,max(Fact1),max(Fact2) 
From (Select dimension1, dimension2, Fact1, -1 as Fact2 
      UNION 
      Select dimension1, dimension2, -1 , Fact2 ) 
GROUP by dimension1, dimension2 

这不是最终的解决方案,当连接不匹配时,它不会返回fact1或2的NULL。当然,您必须用用例,或者如果查询系统认为max(NULL,1)=1

与工会的全面解决方案:

代码语言:javascript
复制
Select dimension1, dimension2,  
       CASE WHEN max(Fact1) = -1 THEN NULL ELSE Fact1 END,  
       CASE WHEN max(Fact2) = -1 THEN NULL ELSE Fact2 END,  
From (Select dimension1, dimension2, Fact1, -1 as Fact2  
      UNION 
      Select dimension1, dimension2, -1 , Fact2 )  
GROUP by dimension1, dimension2  

如果您可以对两个结果集执行一个完整的外部连接,那么它将如下所示

代码语言:javascript
复制
Select isnull(t1.dimension1, t2.dimension1),   
       isnull(t1.dimension2,t2.dimension2),  
       t1.fact1,  
       t2.fact2  
FROM table1 t1 
OUTER JOIN table2 t2   
ON t1.dimension1=t2.dimension1 and t1.dimension2=t2.dimension2   
票数 2
EN

Stack Overflow用户

发布于 2009-08-20 07:07:53

很难回答,因为你还没有详细解释你能做什么和不能做什么。乍一看,您正试图生成一些数据,这将是一个简单的连接的结果-但您说您不能这样做?如果不允许您执行这样一个基本的SQL操作,那么很难想象您能做些什么。我们需要知道这些限制的性质。

您能使用存储过程吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1304409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档