0

我创建了一个报告,从 Purchase_order 表 (PO_REF) 中提取了 1 个对象,从 ORG_ZONES 表 (ZONE_NAME) 中提取了一个对象。

为什么 BO 会无缘无故地生成一个连接到第三个表 ORGANIZATION 的查询?

请注意,ORGANIZATIONS 表与 PURCHASE_ORDER 和 ORG_ZONES 表相关,因此从某种意义上说,如果您要查看表关系图,您会看到一圈链接——如果相关的话!

这是生成的 SQL:

SELECT   
  PRELAY.PURCHASE_ORDER.PO_REF,
  PRELAY.ORG_ZONES.ZONE_NAME
FROM
  PRELAY.PURCHASE_ORDER,
  PRELAY.ORG_ZONES,
  PRELAY.ORGANIZATION
WHERE
  ( PRELAY.ORG_ZONES.ORG_ID=PRELAY.ORGANIZATION.ORG_ID  )
  AND  

( PRELAY.PURCHASE_ORDER.SUPPLIER_ORG_ID=PRELAY.ORGANIZATION.ORG_ID(+)
AND PRELAY.ORGANIZATION.ORG_ID >1  )
  AND  ( PRELAY.ORG_ZONES.ZONE_ID=PRELAY.PURCHASE_ORDER.REMITTO_ZONE_ID  

)

如果我没有从该表中进行选择,为什么 BO SQL 生成器会生成包含 ORGANIZATION 表的 SQL,否则我从中提取的两个表之间存在直接链接?

这是一个真正糟糕的 SQL 生成工具的例子吗?有没有办法避免这种情况 - 或仅在个人报告级别?

4

1 回答 1

2

如果不直接查看 Business Objects 世界,就很难说。您可以在 Universe 中创建单独的组织区域表,并创建引用这些表的单独类和对象。这将避免错误的 SQL 生成,但在尝试决定在报告中使用哪个区域时为最终用户增加了一点复杂性。

于 2010-04-23T22:07:39.453 回答