2017-04-05 1 views
1

ユーザーがSQL Serverデータベースに対してクエリを実行するための簡単なUIを作成しました。 UIは、人の名前の入力フィールドの1つとして開始されました。このフィールドの入力は、データベース上の3つのフィールドを検索するために使用されます。これまでのクエリは次のようになります。このT-SQLクエリに追加する構文

SELECT [Id], [Url], [PersonName], [BusinessName], [DOB], [POB], [Text] 
FROM dbo.DataAggregate 
WHERE CONTAINS([PersonName], 'NEAR((john, doe), 2, FALSE)') 
OR CONTAINS([BusinessName], 'NEAR((john, doe), 2, FALSE)') 
OR CONTAINS([Text], 'NEAR((john, doe), 2, FALSE)') 

上記は、ユーザーがJohn Doeに対して質問したと仮定しています。 NEARの要件は、フィールド内のデータ間のフォーマットの不一致に関係していますが、これはFYIのこの問題とは関係ありません。

ここでは、UIに4つの入力フィールドを追加して、ユーザーがさらにクエリを調整できるように指示されました。これらのフィールドは、すでにDBレコードに存在します。私の質問は、UIの追加フィールドが使用されたときに、上記のクエリにどのように追加するのですか?私はそれにいくつかのANDステートメントまたはORステートメントを単に追加するだけですか?

は私はあなたが私を助ける助けるために例を挙げてみましょう:

User Query: 
Person Name: John Doe 
DOB:   01/01/1900 
Address:  123 Main St 
POB:   USA 
Occupation: Worker 

私は他の4つの入力フィールドのデータが含まれるように、私のクエリに追加する方法は?最初に、どの入力フィールドに入力されたフィールドと入力されていないフィールドを扱うために、クエリにIF文が必要ですか?

他の4つの入力フィールドの各値は、テキストフィールド自身のフィールドで検索する必要がある、プラスでしょう - すなわち -The DOBは、DOBフィールドとテキストフィールドに -The住所で検索する必要がありますを希望アドレスフィールドとテキストフィールドで検索する必要があります など

このようなクエリを構造化するには、上記のクエリと同様の5セクションをIF/AND/OR。

ありがとうございます。

答えて

0

あなたはパラメータを使用している場合は、これはしかし厄介実際に素早く取得する予定です

Where 
((@input1 is null) or (somefield = @input1)) 
Or/And 
... 

、彼らは来週より多くの入力を思い付くだろうこのトリックとラウンド未実装の入力を取得することができます。

その他のオプションこれまでのアドバイスに

Grid with Filter capability. 
Data dump for say Excel 
Building the query programatically, with parameters. 
+0

おかげで - 今のは、これ以上の入力を想定してみましょうするためには、私にスローされます。私は確かに言及したそれらの他のオプションを確かに探検します。 – Stpete111

+0

入力が必須であるかどうか、および入力が必須であることも考慮する必要があります。名前を入力する必要がある場合は、他の入力は別の方法で処理されます。それは最も困難なケースなので、私はあなたの入力のすべてがオプションであると仮定します。また、他のフィールドも3つの異なる場所でチェックされますか? –

+0

@LaughingVergil技術的には必須ではないが、ユーザーは常に少なくとも名前フィールドに何かを入力する。他の4つは常にオプションです。あなたの最後の質問に関しては、他の4つの入力フィールドは、それぞれのフィールドとテキストフィールドの2つの異なる場所でチェックされます。 – Stpete111

関連する問題