我有两个表(两个单独的SQL查询的结果,这个结果将由List<Object>包含,其中每个对象代表数据库的一行)。
Table_1
Table_2
我想在RESULTSET中加入这两个结果
Table_Resultant
由于查询系统中的部分的复杂性,我无法对结果表发出单个查询,由于这些限制,每次都必须将两个结果列表<object>(table_1 & table_2)加入到table_resultant中。
解决这个问题的可能方法是什么?
在MYSQL中创建临时表(加入两个结果集)是否是一个潜在的解决方案?是的,我可以在Mysql中创建临时表。
是的,允许在2“结果”上使用“复杂”SQL来获取resultant_table。
发布于 2009-08-20 07:33:28
所以你可以做工会但不加入?您是否需要在两个源表中匹配Dimension1和Dimension2的值?或者,如果您只需要从两个表中获取所有值并将它们合并到结果表中(在这种情况下,是的话,Union可能就能做到这一点)
您需要一个完整的外部联接,假设这在您的查询系统中是不可能的,下面是解决方案的大纲,假设:
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
与工会的全面解决方案:
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 如果您可以对两个结果集执行一个完整的外部连接,那么它将如下所示
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 发布于 2009-08-20 07:07:53
很难回答,因为你还没有详细解释你能做什么和不能做什么。乍一看,您正试图生成一些数据,这将是一个简单的连接的结果-但您说您不能这样做?如果不允许您执行这样一个基本的SQL操作,那么很难想象您能做些什么。我们需要知道这些限制的性质。
您能使用存储过程吗?
https://stackoverflow.com/questions/1304409
复制相似问题