0

I have data item Dealer Code in the report which I fetching from D_DEALER Table. But here when I perform generate sql it gives the below query.

"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"

There are certains level of joins applied in Cognos FM. But ideally it should fetch record from only one table (D_DEALER) – why are other tables (PGM_OPTIONS, OPTION_INDEX, D_SC_DLR_PROFILE) coming into the picture?

4

2 回答 2

1

这确实是一个 Cognos 问题,但从 Db2 的角度来看,如果表之间的连接上有外键,优化器将删除任何冗余连接。

但是,查看您的查询,需要完成所有连接,以便"PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')可以应用过滤器。即,您只要求没有 C_PGM_ATTR 为“U”的经销商。如果您删除该要求,您可能会发现 Db2 和/或 Cognos 将删除与其他表的连接。

于 2018-04-13T11:29:15.633 回答
0

FM 具有连接,但是当您从一个查询主题中提取一列时,SQL 应该只显示一个表,但最有可能的是该表D_DEALER在 FM 中嵌入了带有值的过滤器

"D_DEALER"."L_DLR_CURR_REC" = 'Y'
 "PGM_OPTIONS"."C_PGM_ATTR" NOT in ('U')

这是我的猜测

于 2018-04-13T17:52:35.247 回答