2016-09-22 16 views
1

私のPHP SQL検索クエリでは、私は5つの異なる検索基準(最も重要なものから最も小さいものまで)を持っています。例えばPHP複数の検索をクエリ

  1. (最も):
  2. エリア
  3. カラー
  4. に名前を付ける形状
  5. (最も重要):クエリの時間

、私は次のとおりです。

$ajax_data = $_POST['data']; 
$name  = $ajax_data [0]; 
$area  = $ajax_data [1]; 
$color  = $ajax_data [2]; 
$shape  = $ajax_data [3]; 
$time  = $ajax_data [4]; 

$option = "WHERE name = '$name' AND area = '$area' AND color = '$color' AND shape = '$shape' AND time = '$time'"; //Not complete 
$query = "SELECT * FROM $table $option limit 10; 

ここに私がやろうとしていることがあります。

5つの条件(名前、領域、色、形、時間)を使用して、クエリの検索を行い、最も関連性の高いデータを検索します。

は、たとえば、以下の検索条件は、AJAXを経由して送信されました:

Ajax search criteria: Earth, Canada, White, Square, Today 

はその後、私は同じ基準のクエリー検索をしたいです。

ただし、同一のデータが存在しない場合があります。

このシナリオでは、私は10の結果が出るまで、最も重要でない基準を削除し、別の検索などを行いたいと考えています。

どのように私はこれのためのクエリを書くことができますか?

+1

ジェームズは明らかに彼がここに質問をするためにPDOを知りません。勘違いする必要はありません。 – HEYHEY

答えて

1

テーブルの数値フィールドを作成して一致数を記録し、このフィールドの降順を並べ替えて結果にLIMITを適用すると、このようなアプローチを試すことができますか?

擬似コードの謝罪は、あなたに考えを与えるのに十分であるはずです。

$option = "WHERE name = '$name' AND area = '$area' AND color = '$color' AND shape = '$shape' AND time = '$time'"; //Not complete 
$order = "ORDER BY matchQuality DESC"; 


$query = "SELECT *, IF(name = '$name', 1, 0) + IF(area = '$area', 1, 0) + IF(color = '$color', 1, 0) + IF(shape = '$shape', 1, 0) + IF(time = '$time', 1, 0) matchQuality FROM $table $option $order limit 10;"; 

さらなる要件がある場合はお知らせください。

よろしく、

+0

Jamesさん、ありがとう!私はアイデアを得て、それを試してみましょう!感謝します! –

+0

喜びスティーブ! –

関連する問題