我在报告中有数据项Dealer Code
,我从D_DEALER
表中获取。但是当我执行生成sql时,它会给出以下查询。
"select distinct
"D_DEALER"."I_CURR" "Dealer_Code"
from
"DEALER"."D_DEALER" "D_DEALER" ,
"SRVCTRCT"."PGM_OPTIONS" "PGM_OPTIONS" ,
"SRVCTRCT"."OPTION_INDEX" "OPTION_INDEX",
"SRVCTRCT"."L_DLR_PROFL" "D_SC_DLR_PROFILE"
where
"D_DEALER"."L_DLR_CURR_REC" = 'Y'
and "PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')
and "D_SC_DLR_PROFILE"."I_DLR_DIM" = "D_DEALER"."I_DLR_DIM"
and "OPTION_INDEX"."C_OPT_KEY" = "D_SC_DLR_PROFILE"."C_KEY_OPT"
and "OPTION_INDEX"."I_SC_OPT_SAN" = "PGM_OPTIONS"."I_SC_OPT_SAN" FOR FETCH ONLY"
Cognos FM中应用了某些级别的连接。但理想情况下,它应该只从1 table(D_DEALER)
获取记录,但为什么其他tables(PGM_OPTIONS,OPTION_INDEX,D_SC_DLR_PROFILE)
会进入图片?
请帮助我解决这个疑问。 提前致谢。
答案 0 :(得分:0)
这实际上是一个Cognos问题,但从Db2的角度来看,如果表之间的连接上有外键,优化器将删除任何冗余连接。
但是,查看您的查询时,需要完成所有连接,以便可以应用"PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')
过滤器。即您只询问没有C_PGM_ATTR的经销商' U'。如果删除该要求,您可能会发现Db2和/或Cognos将删除与其他表的连接。
答案 1 :(得分:0)
FM有连接,但是当你从一个查询主题中提取一列时,SQL应该只显示一个你想象的表,但最有可能的是表D_DEALER
在FM中嵌入了带有值的过滤器
"D_DEALER"."L_DLR_CURR_REC" = 'Y'
"PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')
这是我的猜测