我的要求是有一个类似于以下内容的查询:
SELECT * FROM table1
WHERE oid in (
SELECT * FROM table 2
WHERE condition )
我的问题是 table1 和 table2 位于不同的数据库上。
我已经了解到您可以执行类似 [db1].table 的操作,但在我使用 Eclipse Birt 环境的情况下它不起作用。
最佳答案
您可以通过两种方式解决此问题:
1) 使用数据库链接之类的东西。 MySQL 的支持有限(注:我几乎没用过 MySQL)请参阅Oracle Database Link - MySQL Equivalent? 。这样,您就可以将问题转移到数据库级别。
2) 根据实际问题(阅读:“select oid FROM table2 where condition”结果的长度,您可以使用 BIRT 数据立方体或
3)使用两个数据集和一个布局结构列表,如下所示:
这两个数据集需要不同的数据源。
- 数据集“T2_oids”,带有查询“从 table2 where 条件中选择 oid”。
- 数据集“T1_object”,具有单个参数 param_oid 和查询“select * from table1 where oid = ?”。
布局结构: * 外部列表项“T2_oids”绑定(bind)到数据集“T2_oids” * 内部TableItem或ListItem“T1_object”绑定(bind)到DataSet“T1_object”,参数绑定(bind)到row[“oid”](或row[“OID”],使用列表框)。此项必须放置在 T2_oids 详细信息部分内。
由于 T1_object 将返回单行,因此您甚至可以使用 GridItem 而不是 TableItem 或 ListItem。
关于mysql - 来自不同数据源的子查询(Eclipse 报告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44900192/