(注: この質問はServerFault からクロスポストされています。)
Oracle 10g データベースの複数のテーブルで Oracle テキスト検索を実行する必要があります。テーブルの構造は次のとおりです。
Table1 (ID, col1, col2, ...)
SubTable1 (ID, Table1ID, col1, col2, ...)
SubTable2 (ID, Table1ID, col1, col2, ...)
Table1 は、SubTable1 と Subtable2 の両方に対して 1 対 n の関係を持っています。
実行時に、クライアント アプリケーションは、3 つのテーブルを検索するための検索語を提供します。検索語を含むいずれかのテーブルのレコードのみを結合して、クライアント アプリケーションに返す必要があります。
シナリオ(簡略化した例)
Table1 のレコードに SubTable1 の 10 のレコードがあり、10 のうち 4 つだけに検索語が含まれている場合、4 つの行だけがクライアント アプリケーションに返されます。同じことが SubTable2 にも当てはまります。
質問
contains
最小限の変更で、理想的にはすべてのテーブルで 1 回の検索だけでこれを行う方法はありますか? それともcontains
、テーブルごとに 1 つ指定する必要がありますか?
追記事項
- これに従って、 Table1 にダミーのテキスト インデックス列を作成してみました
User_Datastore
。ストアド プロシージャを使用して、すべてのテーブルからすべての関連データを取得し、XML 形式でフォーマットします。SubTable1 (シナリオで説明) の 10 レコードすべてが代わりに返されるため、これは機能しません。Table1 の行は検索語に一致し、Subtable1 の 10 行すべてと結合します。