首页 > 解决方案 > 将 3 个查询合并为一个子查询

问题描述

是否可以编写一个查询来从 3 个表中获取数据?下面是我为获取数据而运行的 3 个查询,但需要一个查询。

我试图编写以下查询,但我得到的数据是错误的

(SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALCOM_DBF  WHERE  M_GF_IND = 'Y' ) A
(SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALIRD_DBF  WHERE  M_GF_IND = 'Y' ) B
(SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALSCF_DBF  WHERE  M_GF_IND = 'Y' ) C

我试图编写以下查询,但我得到的数据是错误的

SELECT DD.M_NB, DD.M_GF_IND, DD.M_HEDGE_LNK,
       FF.M_NB, FF.M_GF_IND, FF.M_HEDGE_LNK 
FROM TABLE#DATA#DEALCOM_DBF DD,
     TABLE#DATA#DEALIRD_DBF FF  
WHERE  DD.M_GF_IND = 'Y' and FF.M_GF_IND = 'Y'   

抱歉,如果这是一个不好的问题,我是 SQL 新手,因此无法弄清楚。如果我找到任何替代方案,将更新。

标签: oracleoracle11goracle-sqldeveloper

解决方案


您在寻找UNION( ALL) 吗?

SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALCOM_DBF  WHERE  M_GF_IND = 'Y' 
UNION ALL
SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALIRD_DBF  WHERE  M_GF_IND = 'Y' 
UNION ALL
SELECT M_NB,M_GF_IND,M_HEDGE_LNK  FROM TABLE#DATA#DEALSCF_DBF  WHERE  M_GF_IND = 'Y';

推荐阅读