Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回最佳匹配的SQL查询(具有最多匹配列的行)_Php_Sql - Fatal编程技术网

Php 返回最佳匹配的SQL查询(具有最多匹配列的行)

Php 返回最佳匹配的SQL查询(具有最多匹配列的行),php,sql,Php,Sql,我的数据库如下所示: id | A | B | C | D 对于每个字母,都有一个介于0和3之间的随机值 每个ID的这些值都会更改 如何选择具有最多匹配列的行,即使它不是完美匹配 (这正好说明了我的意思:) 我希望这张照片有帮助, 我需要创建一个15个问题的测验,与你的狗相匹配。 15个问题中的每个问题返回一个从0到3的值,然后有11个是或否问题(0=否,1=是) 在测验结束时,我得到了如下结果:(从佩雷森变为佩雷森)0-3,0-4,0-2,0-2,0/1,0/1,0/1,0/1,0/1,0

我的数据库如下所示:

id | A | B | C | D
对于每个字母,都有一个介于0和3之间的随机值

每个ID的这些值都会更改

如何选择具有最多匹配列的行,即使它不是完美匹配

(这正好说明了我的意思:)

我希望这张照片有帮助, 我需要创建一个15个问题的测验,与你的狗相匹配。 15个问题中的每个问题返回一个从0到3的值,然后有11个是或否问题(0=否,1=是)

在测验结束时,我得到了如下结果:(从佩雷森变为佩雷森)0-3,0-4,0-2,0-2,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1


我需要收集这些值并获得最佳匹配,即具有最多匹配列的狗。

我认为您需要配备评分系统,因为您不需要寻找精确匹配。一个想法的例子是

从中选择Id { 选择A-B、A-C、A-D、B-C、B-D、C-D、id 从桌子上 }外 何处(此处使用一些逻辑来确定您认为合适的内容)

一个想法是总结内部查询的所有差异。但是,如果你有一个非常大的和一个非常小的,那可能会给出错误的结果

你也可以计算所有差异之和的平均值

您可以做的另一件事是在差异为0的内部查询中按列排序。当0或1结束时,按大小写排序

或者一个组合


这实际上取决于您试图获取的确切内容

您可以选择所有列的总和与输入的总和相同的元素
然后,您可以浏览它们并查看匹配项,并保留一个变量“$best”,当您用更多匹配项填充查找元素时,该变量将被更新

编辑您的问题并提供示例数据和所需结果。这相当不清楚。另外,用您正在使用的数据库进行标记。您可能会看到
按和顺序从tablename中选择id((A=1)+(B=1)+(C=1)+(D=1))desc limit 1
(在本例中查找最多为1的行)
如果一行的所有列中都有“0”,而另一行的列中都有“1”,我如何选择具有最多匹配列的行
在所有列中,然后选择哪一行?二者都我希望这张图片有帮助,我需要为你制作一个15个问题的测验,与一只狗相匹配。15个问题中的每个问题都返回一个从0到3的值,然后有11个是或否的问题(0=否和1=是)。在测验结束时,我得到如下结果:(从佩雷森变为佩雷森)0-3、0-4、0-2、0-2、0/1、0/1、0/1、0/1、0/1、0/1。我需要收集这些值并获得最佳匹配,即具有最多匹配列的狗。希望这次我说的很清楚,谢谢你的回答!我希望这张图片有帮助,我需要为你制作一个15个问题的测验,与一只狗相匹配。15个问题中的每个问题都返回一个从0到3的值,然后有11个是或否的问题(0=否和1=是)。在测验结束时,我得到如下结果:(从佩雷森变为佩雷森)0-3、0-4、0-2、0-2、0/1、0/1、0/1、0/1、0/1、0/1。我需要收集这些值并获得最佳匹配,即具有最多匹配列的狗。希望我能更好地解释自己,谢谢你的回答!事实上,如果你的数据库中没有数千个条目,你可以获取所有数据,只需保留$BEST你说的lessan是什么意思?加上总数,现在我意识到这不是一个好主意,因为你可能有只匹配一列的情况,因此,您必须选择列为_sum的所有条目,但这取决于您的数据库中可以有多少条条目、多少列等。对于包含4列的1500个元素,最快的方法是简单地选择所有数据。我希望您看到我更新了更详细的主线程,包括我的数据库。我仍然不明白——如果我这样做了,我怎么能将数据存储在var中呢?我必须检查每一列中与之匹配的行,然后显示返回最多的行?你能给我一个前两列的代码示例吗?再次感谢您的回答