2012-03-20 72 views
1

我使用PHP和MySQL制作求职招聘网站,我希望能够给考生匹配到作业时,将作业提交MySQL的计算匹配

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

我想在什么时候能够做什么提交的工作是检查数据库中的匹配候选人,然后根据他们匹配的标准返回一个百分比

此刻我的想法是让X数据库查询关于x的标准然后制定出百分比方式e.g:

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查询也许这样做的更有效的方法?

+0

您需要显示您的查询。目前还不清楚total_criteria对数学有什么意义。 – kasavbere 2012-03-20 16:24:17

+0

对不起,total_criteria只是一个整数,这是我匹配的标准总数,在这种情况下,这是6 – Andy 2012-03-20 16:44:36

回答

2

按照每个条件运行查询会终止您的服务器。为什么不返回一个包含全部匹配的列?

EG:如果您的过滤器:

  • ColA = 'valA'
  • ColB in (1, 5, 7)
  • ColC like '%valC%'

你可以做somethinkg,如:

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 

的比较是; 0 1返回假。

+0

第二个代码块正是我所需要的,谢谢! – Andy 2012-03-20 17:01:52