2016-03-27 13 views
0

私は、データを検索するユーザーによって記入される場合と記入されない場合がある複数のフィールドを持つWebフォームを持っています。ユーザが2つ以上のパラメータの間でデータを検索しているという考え方です。 EG:このネストされたmysqlクエリをどのように構造化できますか?

  • 株価1と株価2
  • 時価総額1と
  • パラメータ1および他のパラメータ2 2その他の市場キャップ...

今、ユーザーが選択できますこれらのすべて(またはすべて)を組み合わせて、探しているものを識別します。すべてのデータは1つのテーブルに保存されます。今、私はパラメータのこれらのセットのいずれかを取ると、もちろん正常に動作します

"SELECT * FROM tbl_blah WHERE price BETWEEN stockp1 and stockp2"

を行うことができます。

しかし、複数の「WHERE x BETWEEN $ 1と$ 2」タイプのシナリオを入れ子にしなければならないと、やりにくくなります。これが最善のアプローチであるかどうかはわかりません。私は周りを検索したが、私は使用すべきステートメント構造を「取得」しない。

+0

ユーザーが複数の検索条件を選択したときに最適な検索オプションを見つけようとしていますか? – Erick

答えて

1

クエリで複数を使用できます。

例:

SELECT * FROM Chart_Of_Accounts 
    WHERE (price BETWEEN '$stockp1' AND '$stockp2') 
    OR (marketcap BETWEEN '$cap1' AND '$cap2') 
    OR (anotherparam BETWEEN '$param1' AND '$param2'); 

は、その便利を願っています!

+0

必要な出力が何であるかに応じて、ORの代わりにANDを使用できます。 –

+0

私はちょうど代わりに "AND"でこれを試してみました。ありがとう! – user3515232

+0

うれしかった:) –

0

動的にデータを埋めるものをユーザーに基づいてクエリを作成します。

ので、それはこのようなものになるだろう、

$query = "SELECT * FROM tbl_blah WHERE"; 
if(isset['price']) 
$query = $query + "price BETWEEN stockp1 and stockp2"; 
if(isset['parameter2']) 
$query = $query + " AND parameter2 BETWEEN stockp3 and stockp4"; 

今ここにトリックuが必要で、またはWHEREかどうかを確認することです。

関連する問題