ユーザーが選択したフィールドを持つ既存のクエリに基づいて、動的クエリ (またはアルゴリズム) を構築するタスクがあります。説明させてください:
関数があるとしましょう
ConstructQuery(string inputQuery, string[] RequiredTables, string[] userFields) と 2 つの入力パラメーター:
- inputQuery: 多くのフィールドとテーブル、結合、および where 条件を含む文字列クエリ
- RequiredTables: 必須テーブルのリスト
- userFields: Web またはデスクトップ アプリでユーザーが選択するフィールドのリスト
関数は、クエリが成功するためにのみ必要なテーブルと結合を含む最適化されたクエリを返す必要があります。
たとえば、inputQuery は次のように構成されます。
SELECT
Table1.SomeFieldA,
Table2.SomeFieldB,
Table2.SomeFieldC,
Table3.SomeFieldD
FROM Table1
JOIN Table2 ON Table1.Code = Table2.Code
JOIN Table3 ON Table2.Code = Table3.Code
WHERE Table1.SomeConditionField = "xyz"
userFields は次のとおりです: SomeFieldB、SomeFieldC
必須テーブル: テーブル 1
したがって、予想されるクエリは次のとおりです。
SELECT
Table2.SomeFieldB,
Table2.SomeFieldC
FROM Table1
JOIN Table2 ON Table1.Code = Table2.Code
WHERE Table1.SomeConditionField = "xyz"
私の質問は、この種の問題を解決するための何らかのツールはありますか、それともどのように解決しますか? 私は二分木を考えています...
よろしく、ジャニ