กำลังค้นหา 4 ตารางด้วย Codeigniter เข้าร่วมภายใน

ฉันมี 4 ตารางงาน, บริษัท, ประเภทการจ้างงาน & ประเภทงาน คีย์หลักสำหรับแต่ละรายการคือ job_id, com_id, type_id, job_cat_id แต่ (com_id, type_id, job_cat_id) เป็นคีย์ต่างประเทศของตารางงาน

ข้อความค้นหาของฉันที่ไม่มีบันทึกที่ใช้งานอยู่ทำงานได้อย่างสมบูรณ์และเป็นดังนี้

select company.com_id, company.company_name, jobs.job_id, jobs.title, jobs.opening_date, jobs.closing_date, jobs.number_of_pos, employment_type.type_id, employment_type.type, job_category.job_cat_id,  job_category. category from company inner join jobs on company.com_id=jobs.com_id inner join employment_type on employment_type.type_id=jobs.type_id inner join job_category on job_category.job_cat_id=jobs.job_cat_id

แต่ถ้าฉันพยายามใช้ Codeiginiter Active Record เช่น

  $this->db->select('company.com_id, company.company_name, jobs.job_id, jobs.title, jobs.opening_date, jobs.closing_date, jobs.number_of_pos, employment_type.type_id, employment_type.type, job_category.job_cat_id,  job_category. category');
            $this->db->from('company');
            $this->db->join('jobs','company.com_id=jobs.com_id','inner');
            $this->db->join('employment_type', 'employment_type.type_id=jobs.type_id','inner');
            $this->db->join('job_category', 'job_category.job_cat_id=jobs.job_cat_id','inner');
            $this->db->order_by('job_id','DESC');
            $this->db->limit($limit, $offset);
            $query = $this->db->get();
            return $query->result_array();

ฉันลงเอยด้วยข้อผิดพลาดต่อไปนี้

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`) INNER JOIN `jobs` ON `company`.`com_id`=`jobs`.`com_id` INNER JOIN `employmen' at line 1

SELECT `company`.`com_id`, `company`.`company_name`, `jobs`.`job_id`, `jobs`.`title`, `jobs`.`opening_date`, `jobs`.`closing_date`, `jobs`.`number_of_pos`, `employment_type`.`type_id`, `employment_type`.`type`, `job_category`.`job_cat_id`, `job_category`.` category FROM (`company`) INNER JOIN `jobs` ON `company`.`com_id`=`jobs`.`com_id` INNER JOIN `employment_type` ON `employment_type`.`type_id`=`jobs`.`type_id` INNER JOIN `job_category` ON `job_category`.`job_cat_id`=`jobs`.`job_cat_id` ORDER BY `job_id` DESC LIMIT 10

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


person Emmanuel Mariki    schedule 21.02.2013    source แหล่งที่มา
comment
นี่คือเหตุผลที่ฉันไม่ใช้ฟังก์ชัน Codeigniter และใช้เฉพาะ $this-›db-›query() กับแบบสอบถามที่เป็นลายลักษณ์อักษรของฉันเองเท่านั้น...   -  person Tschallacka    schedule 21.02.2013
comment
เพื่อวัตถุประสงค์ในการทดสอบ คุณสามารถใช้สิ่งนี้ เพื่อประหยัดเวลาของคุณ   -  person Muhammad Raheel    schedule 21.02.2013


คำตอบ (2)


คุณมีช่องว่างใน job_category. category ลบออก และคุณควรเป็นสีทอง

person SNAG    schedule 21.02.2013
comment
ขอบคุณ SNAG คุณจะไม่เชื่อว่าฉันจะดูมันเป็นเวลา 4 ชั่วโมงโดยไม่เห็นที่ว่าง และพร้อมที่จะไป ขอบคุณมาก - person Emmanuel Mariki; 21.02.2013

จัดรูปแบบแบบสอบถามของคุณเช่นนี้

$data   =   array(
                'company.com_id', 
                'company.company_name', 
                'jobs.job_id', 
                'jobs.title',
                'jobs.opening_date', 
                'jobs.closing_date', 
                'jobs.number_of_pos', 
                'employment_type.type_id', 
                'employment_type.type', 
                'job_category.job_cat_id',  
                'job_category.category'
);

$this->db->select($data);
$this->db->from('company');
$this->db->join('jobs','company.com_id=jobs.com_id','inner');
$this->db->join('employment_type', 'employment_type.type_id=jobs.type_id','inner');
$this->db->join('job_category', 'job_category.job_cat_id=jobs.job_cat_id','inner');
$this->db->order_by('job_id','DESC');
$this->db->limit($limit, $offset);
$query = $this->db->get();
return $query->result_array();
person Muhammad Raheel    schedule 21.02.2013