对于我的php sql搜索查询,我有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个结果。
我有什么建议可以为此编写查询吗?
答案 0 :(得分: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;";
如果您有任何进一步的要求,请告诉我。
此致
詹姆斯