【问题标题】:Subquery from different data source (Eclipse report)来自不同数据源的子查询(Eclipse 报告)
【发布时间】:2023-04-05 04:31:01
【问题描述】:

我的要求是有一个类似于以下内容的查询:

SELECT * FROM table1
WHERE oid in (
    SELECT * FROM table 2
    WHERE condition )

我的问题是 table1 和 table2 在不同的数据库上。

我读到过,您可以执行 [db1].table 之类的操作,但在我使用 Eclipse Birt 环境的情况下它不起作用。

【问题讨论】:

    标签: mysql database eclipse datasource birt


    【解决方案1】:

    你可以通过两种方式解决这个问题:

    1) 使用类似数据库链接的东西。 MySQL 中的支持有限(注意:我几乎从未使用过 MySQL)请参阅Oracle Database Link - MySQL Equivalent?。这样,您就可以将问题转移到数据库级别。

    2) 根据实际问题(阅读:“select oid FROM table2 where condition”结果的长度,您可以使用 BIRT 数据立方体或

    3) 使用两个 DataSet 和一个布局结构列表,如下所示:

    这两个 DataSet 需要不同的 DataSource。

    • DataSet "T2_oids" 带有一个查询 "select oid from table2 where condition"。
    • 具有单个参数 param_oid 和查询“select * from table1 where oid = ?”的数据集“T1_object”。

    布局结构: * 外部 ListItem "T2_oids" 绑定到 DataSet "T2_oids" * 内部 TableItem 或 ListItem "T1_object" 绑定到 DataSet "T1_object",参数绑定到 row["oid"](或 row["OID"],使用列表框)。此项目必须放在 T2_oids 详细信息部分内。

    由于 T1_object 将返回单行,您甚至可以使用 GridItem 代替 TableItem 或 ListItem。

    【讨论】:

    • 我现在使用了解决方案 3),因为它部分解决了问题,它获得了正确的密钥集,但它一次将一个密钥发送给另一个查询,所以它正在工作,但我有记录排序的问题,因为它们是按键排序的,而我需要它们按“日期”列排序,即使在 birt 输出表上设置排序过滤器也不能解决问题,有什么解决方法吗?
    • 有一种解决这个排序问题的方法(通过将外部结果写入 POJO(例如 ArrayList),然后使用脚本数据集对结果进行最终排序。但这太复杂了。所以你应该关注 1)。
    猜你喜欢
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多