Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 MySQL正在计算匹配的百分比_Php_Mysql_Statistics - Fatal编程技术网

Php MySQL正在计算匹配的百分比

Php MySQL正在计算匹配的百分比,php,mysql,statistics,Php,Mysql,Statistics,我正在使用PHP和MySQL创建一个招聘网站,我希望在提交工作时能够将应聘者与工作进行匹配 当客户提交一份工作时,他们能够选择该工作适用于哪个部门,是否需要驾驶执照,候选人是否必须是SIA(安全行业管理局)注册的,以及哪个SIA级别和几个其他标准 提交作业时,我希望能够检查数据库中是否有匹配的候选人,然后根据他们匹配的标准返回一个百分比 目前,我的想法是对x标准进行x数据库查询,然后通过这种方式计算出百分比,例如: public function getJobCriteriaPercentage

我正在使用PHP和MySQL创建一个招聘网站,我希望在提交工作时能够将应聘者与工作进行匹配

当客户提交一份工作时,他们能够选择该工作适用于哪个部门,是否需要驾驶执照,候选人是否必须是SIA(安全行业管理局)注册的,以及哪个SIA级别和几个其他标准

提交作业时,我希望能够检查数据库中是否有匹配的候选人,然后根据他们匹配的标准返回一个百分比

目前,我的想法是对x标准进行x数据库查询,然后通过这种方式计算出百分比,例如:

public function getJobCriteriaPercentage($job_id, $candidate_id) {
    $sector_query = $this->db->query(...);
    $driving_licence_query = $this->db->query(...);
    $sia_query = $this->db->query;
    ...
    $matches = 0;
    if($sector_query->num_rows) {
        $matches++;
    }
    ...
    $percent = ($matches / TOTAL_CRITERIA) * 100;
}

有没有一种更有效的方法可以在一个MySQL查询中实现这一点?

根据每个条件运行查询将杀死您的服务器。为什么不返回包含全部匹配项的列

如果你的过滤器是:

  • ColA='valA'
  • ColB in(1,5,7)
  • ColC类“%valC%”
你可以这样想:

select
    (ColA = 'valA') + 
    (ColB in (1, 5, 7)) + 
    (ColC like '%valC%') TotalMatches
from t
where jobId = $jobId and candidateId = $candidateID
如果您想知道具体的匹配项,可以将其拆分为列:

select
    ColA = 'valA' ColAFilter,
    ColB in (1, 5, 7) ColBFilter,
    ColC like '%valC%' ColCFilter
from t
where jobId = $jobId and candidateId = $candidateID

比较结果返回1表示true,0表示false。

您需要显示查询。现在还不清楚什么是total_条件,数学才有意义。对不起,total_条件只是一个整数,它是我匹配的条件总数,在本例中是6