【问题标题】:Business Objects SQL generator. Generally, how does it work? Why did it do this:业务对象 SQL 生成器。一般来说,它是如何工作的?为什么这样做:
【发布时间】:2010-04-23 18:26:04
【问题描述】:

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

为什么 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  

)

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

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

【问题讨论】:

    标签: business-objects business-intelligence


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多