簡體   English   中英

比較PHP中的MySQL數據庫表值

[英]comparing mysql database table values in php

我在底部添加了數據庫結構

我正在為招聘機構制定排名系統。我在不同的表格中捕獲所有申請人的詳細信息,然后通過比較候選人的數據對他們進行排名(如果它們符合特定職業廣告的需求/要求)。數據庫中的作業到job_advert表中的作業。 然后顯示10個最佳排名(合格)候選人的列表,並向他們發送通知,告知他們符合該職位的條件。

我從數據庫中獲取候選人數據,如下所示:

class ranking_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    function age() {
        $sql = "SELECT * FROM membership";
        $query = $this->db->query($sql)->result();
        foreach ($query as $row) {
            $id = $row->id_number;
            $dobs = substr($id, 0, 6);
            $dob = str_split($dobs, 2);
            $day = date('d', mktime(0, 0, 0, 0, $dob[2], 0));
            $month = date('m', mktime(0, 0, 0, $dob[1] + 1, 0, 0));
            $year = date('o', mktime(0, 0, 0, 0, 0, $dob[0] + 1));
            $date = "$day/$month/$year";
            //explode the date to get month, day and year
            $date = explode("/", $date);
            //get age from date or birthdate
            $age = (date("md", date("U", mktime(0, 0, 0, $date[0], $date[1], $date[2]))) > date("md") ? ((date("Y") - $date[2]) - 1) : (date("Y") - $date[2]));
        }
        return $age;
    }

    function job_experience() {
        $sql = "SELECT * FROM  job_list 
        JOIN job_history
        ON job_list.job_history_id = job_history.job_history_id";
        $query = $this->db->query($sql)->result();

        foreach ($query as $row) {
            $start = $row->start_date;
            $end = $row->end_date;

//            //explode the date to get month, day and year
            $start = explode("-", $start);
            $end = explode("-", $end);
//            //get age from date or birthdate
            $exp_in_years = (date("md", date("U", mktime(0, 0, 0, $start[2], $start[1], $start[0]))) > date("md", mktime(0, 0, 0, $end[2], $end[1], 0)) ? ((date("Y", mktime(0, 0, 0, 0, 0, $end[0])) - $start[0])) : (date("Y", mktime(0, 0, 0, 0, 0, $end[0])) - $start[0]));
        }

        return $exp_in_years;


    }

    function location() {
        $sql = "SELECT * FROM personal";
        $query = $this->db->query($sql)->result();

        foreach ($query as $row) {
            $city = $row->city;
        }
        return $city;
    }

    function relocate() {
        $sql = "SELECT * FROM personal";
        $query = $this->db->query($sql)->result();

        foreach ($query as $row) {
            $relocate = $row->relocate; //are you willing to relocate yes/no
        }
        return $relocate;
    }

    function get_personal() {
        $this->db->select('*');
        $this->db->from('membership');
        $this->db->join('personal', 'membership.id_number = personal.id_number');
        $query = $this->db->get()->result();

        foreach ($query as $row) {
            $row->id_number;
            $row->firstname;
        }
        return $query;
    }

以及類似這樣的廣告詳細信息:

    function get_advert() {
        $sql = "SELECT * FROM job_advert";
        $query = $this->db->query($sql)->result();
        foreach ($query as $row) {

            $job_id = $row->job_id;
            $job_title = $row->job_title;
            $salary_offered = $row->salary_offered;
            $is_negotiable = $row->negotiable;
            $company_location = $row->company_location;
            $experience = $row->required_experience;
            $age = $row->age;
        }
    }

}

現在,我不知道如何將候選數據與從job_adverts表獲得的數據進行比較。 我真的不知道。 任何形式的幫助將不勝感激。

數據庫結構

大膽的PK itacic是FK

成員資格( id_number ,名字,姓氏,用戶名,電子郵件,電話,密碼,角色,Reg_time,已激活);

個人( person_id ,地址,城市,許可證, id_number ,性別,搬遷,minimum_salary, id_number ,contract_type);

job_list( job_list_idjob_history_id ,start_date,end_date,收入,company_name,industry_type,reason_for_leaving,job_title);

job_history( job_history_idid_number );

job_advert( advert_id ,job_title,job_description,start_date,end_date,提供的薪金,可協商,福利,公司位置,required_experience,年齡);

我在數據庫中有更多表,但是這些是我用於排名的表。

我不確定您正在處理多少數據,但是從數據庫中提取所有數據並將其存儲在本地php變量中似乎是個壞主意。

您的數據庫結構似乎都非常糟糕。...將盡可能多的數據存儲到成員表中...無需將其拆分為一堆表,除非該表獲取大量列或它的字段一個人可以擁有多個數據點。 一個例子是以前的雇主...我將如何處理這個問題,就是創建一個名為membersData的鏈接/聯接表,並使用membersDataType ='employeer'

如果要解決此問題,請執行以下操作...

1)創建一個HTML表單,顯示所有職位發布。 當您從下拉列表中選擇作業之一時,它將提交表格和job_id。

2)從數據庫中為該job_id選擇作業數據

3)建立符合每個條件的查詢

$query = "SELECT * FROM members WHERE";
if ($job["age"]){ $query .= " age > ".$job["age"]; }

盡管尚未發布數據庫結構,但是您可以嘗試在表之間創建關系。 您可以將一個求職者與job_advets中的某些記錄相關聯。 在招聘過程中,一些根據經驗而定的候選人將與公司中的某些職位兼容或不兼容。 因此,每個候選人的job_experience函數必須確定他所應用的特定工作是否兼容。

那會很有趣的:)

我猜最簡單的是$exp_in_years > $experience($salary_offered >= $salary_asked_for) OR $is_negotiable但即使在那兒,您可能還需要在這些限制以下($exp_in_years * 0.9) > $experience包括幾個百分點。

$job_title :可能需要非常好的命名方案和一些非常寬容的檢查

$company_location :我建議使用網絡服務,該服務將計算公司的位置與申請人的位置之間的距離-但是我還沒有這樣做,所以無法提供詳細信息,抱歉。

但是...盡管有所有自動化...您可能仍然需要人工進行篩選,所以我寧願給他們提供更多的候選人,而不是僅僅因為一個“小”測試在某處失敗而淘汰完全合適的候選人...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM