2012-03-20 82 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