2017-07-04 2 views
0

私の要件は、次のようなものであるクエリを持つことである。サブクエリ

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

私の問題は、TABLE1とtable2のは、異なるデータベース上にあることです。

私は、[db1] .tableのようなことをすることができますが、私の場合はEclipse Birt環境では動作しません。データベース・リンクのようなものを使用してください)

1:

答えて

0

次の2つの方法でこれを解決することができます。 MySQLには限られたサポートがあります(注意:私はほとんどMySQLを使用していません)Oracle Database Link - MySQL Equivalent?を参照してください。この方法で、問題をデータベース・レベルに移動します。

2)実際の問題に応じて(読み:の長さは「table2のFROM OIDを選択した状態ここで、」結果は、あなたがBIRTのデータキューブや

3)2つのデータセットを使用してレイアウト構造のいずれかを使用することができます

2つのデータセットには異なるデータソースが必要です。

  • クエリ "select_id from table2 where condition"を持つデータセット "T2_oids"。
  • 単一のパラメータparam_oidとクエリ "select * from table1 where oid =?"を持つデータセット "T1_object"。

レイアウト構造:DataSetに結合 *アウターリストアイテム「T2_oids」「T2_oids」 *インナー表項目またはリストアイテム「T1_object」データセットに結合した「T1_object」行に結合したパラメータを使用して[「OID」(または行["OID"]、リストボックスを使用してください)。この項目は、T2_oidsの詳細セクション内に配置する必要があります。

T1_objectは単一の行を返しますので、TableItemまたはListItemの代わりにGridItemを使用することもできます。

+0

問題を部分的に解決するため、解決策3)を使用しましたが、正しいキーセットを取得しましたが、その時点でもう1つのクエリに送信するので、動作しますが、レコードソートに問題があります私は列 "日付"で並べ替える必要がある間、彼らはキーでソートされているので、birt出力テーブルに並べ替えフィルタを設定しても、問題を解決しません、回避策? – GiLA3

+0

このソートの問題を回避する方法があります(外部結果をPOJO(ArrayListなど)に書き込んでから、スクリプトデータセットを使用して最終的に結果を並べ替える方法がありますが、これは複雑すぎます。 – hvb