2016-05-10 7 views
1

私は温度のような感覚データを持つ列が複数あるテーブルを持っています。私は、ユーザーのクエリを入力する検索バーを使用して、テーブルで利用可能なデータを検索する既存の方法があるかどうかを尋ねたがっています(編集:基本的に、ユーザーは任意のテキストクエリを入力できますが、感覚データでいっぱいのテーブルに役立つ何か?)私はすでに研究を行ったが、まともな結果を見つけることができなかった。ベローは、テーブルの説明です:MySQLに格納されている感覚データを検索する方法はありますか?

あなたが見ることができるように、このテーブルには、主に、列の名前とクライアントとのdatetime列を除いて、数値を持っています。

+2

「検索バーを使用する」という意味を教えてください。もちろん、何かを検索する方法はありますが、すべてはあなたが何をしたいのかによって異なります。 –

+0

編集中。提案ありがとう。 –

+0

完了。私はこれがそれをより良く説明することを願っています –

答えて

1

はい複数の方法があります。 あなたは、たとえば、検索のためのさまざまな条件を指定するようユーザーに促すことができる:

  • をのDateRange
  • クライアント
  • TempRange
  • ステータス

そしてより多くの、あなたができるこの方法あなたが探しているものだけを得るためにデータをフィルタリングします。あなたの質問で理解できることは、複数のフィールドで検索する単一の検索ボックスを1つの検索ボックスに追加したい場合です。その場合、興味のあるフィールドのそれぞれをフィルタリングする必要があります。 OR演算子といくつかのデータ型変換。

あなたは、このクエリは「55」をクライアントに含まれるすべてのレコードを取得することを見ることができます
--your parameters and temporary variables to perform conversion 
DECLARE @criteria VARCHAR(20) = '55'; 
DECLARE @criteria_temp INT = 0; 

--try conversions here 
BEGIN TRY 
SET @criteria_temp = CONVERT(int,@criteria,0); 
END TRY 
BEGIN CATCH 
SET @criteria_temp = 0; 
END CATCH 

--your query 
SELECT * FROM MyTable 
WHERE 
Client LIKE '%'[email protected]+'%' OR 
TEMP = @criteria_temp 

とユーザーが判断基準として、文字列「test」と入力するとTEMPが55

に等しいレコードを@criteria_tempの変換は失敗します。この場合、デフォルト値(0など)を使用でき、クエリにはクライアントに 'test'が含まれ、tempが0に等しいレコードがすべて返されます。

クエリ内のさまざまなデータ型と検索条件に変数を追加できます。

+0

遅れて申し訳ありません。正確な結果が得られ、ユーザーとのやりとりが容易になるため、特定のパラメータを定義する方が良いアイデアになるはずです。だから、私は検索をフィルタリングする場合は、それは私がレイアウトの権利をどのように制限したいのかだけに依存しますか?しかし、ユーザーがクエリの特定の日付を指定したくない場合は、検索スペースが指数関数的に増加します。これは応答時間が遅く、これを解決する方法は何ですか? P.S:MySQLコーディングですか? –

+0

それはシナリオに依存します。グーグルのような場所は、各ユーザーが入力する条件が単語、フレーズ、引用符、シリアル番号、モデル、プロパティ、ウェブサイトの名前などが非常に異なる可能性があるため、より具体的にする必要があります彼らは検索に特別な条件を追加する事前検索を使用することができます。あなたのケースでは、複数の検索フィールドを持つことで利益を得ることができます。あるいは、検索する希望のフィールドで少なくともユーザーに選択させることができます。この例はhttp://www.vxsearch.com/screenshots/vxsearch_search_filesで見ることができます。 .jpg – ArturoAP

+0

提供されたコードは実際にSQL Serverから来ましたが、私は構文をチェックし、MySQLで同じように動作します – ArturoAP

関連する問題