[英]how to join or Union result of 2 sql queries in single result set
我有2個表(兩個單獨的SQL查詢的結果,並且此結果將包含在List <Object>
,其中每個對象代表數據庫的1行)
表格1
TABLE_2
我想將這兩個結果加入RESULTSET AS
Table_Resultant
由於我系統中查詢部分的某些復雜性,我無法對結果表進行單個查詢,並且由於這些限制,我不得不每次都必須將兩個結果列表<object>
(table_1&table_2)合並到table_resultant中
解決該問題的可能方法是什么?
在MYSQL中創建一個臨時表(以連接兩個結果集)可能是一個潛在的解決方案??? 是的,我可以在Mysql中創建臨時表
是的,在兩個“結果”上允許使用“ COMPLEX” SQL來獲取result_table
因此,您可以進行聯盟,但不能加入? 您能否澄清兩個源表中是否需要匹配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
那不是最終的解決方案,當聯接不匹配時,它將為事實1或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
難以回答,因為您還沒有真正詳細解釋可以做什么和不能做什么。 乍一看,您正在嘗試生成一些簡單的JOIN所產生的數據-但是您說不能這樣做? 如果不允許您執行這種基本的SQL事情,那么很難想象您可以做什么。 我們需要了解限制的性質。
您可以使用存儲過程嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.