我有2个表(两个单独的SQL查询的结果,这个结果将包含在List <Object>
中,其中每个对象代表数据库的一行)
TABLE_1
TABLE_2
我想在RESULTSET AS中加入这两个结果
Table_Resultant
由于查询系统中的部分内容有些复杂,我无法对结果表发出单一查询,由于这些限制,我将不得不加入两个结果列表<object>
(table_1&amp; table_2 )每次进入table_resultant
问题的可能方法是什么?
在MYSQL中创建一个临时表(加入两个结果集)可能是一个潜在的解决方案??? 是的,我被允许在Mysql中创建临时表
是,“COMPLEX”SQL允许在2个“结果”中获取 resul_table
答案 0 :(得分:2)
所以你可以做联盟而不加入?您能澄清一下是否需要在两个源表中匹配Dimension1和Dimension2的值?或者,如果您只需要从两个表中获取所有值并将它们合并到结果中(在这种情况下,是联盟可能会这样做)
你需要一个完整的外连接,假设在你的查询系统中是不可能的,这里是解决方案的概要,假设:
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。当然,你必须使用CASE,或者如果你的查询系统认为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
如果您可以对两个结果集执行FULL OUTER JOIN,那么它将如下所示
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
答案 1 :(得分:0)
很难回答,因为你没有真正详细解释你能做什么和不能做什么。乍一看,你试图产生一些简单的JOIN结果的数据 - 但是你说你不能这样做?如果你不被允许做这样一个基本的SQL事情,很难想象你能做什么。我们需要知道限制的性质。
您可以使用存储过程吗?