So I have this MySQL Query, Can you please help me to convert this into codeigniter way?
select *
from projectskillslist ps
LEFT
JOIN empskillslist s
ON s.skillsID = ps.skillsID
LEFT
JOIN projects p
ON p.projectID = ps.projectID
where ps.skillsID IN (SELECT skillsID
FROM empwithskills
where empID='test');
I have tried this, but It didn't work they wway I wanted to.
$this->db->select("*");
$this->db->from('projectskillslist ps');
$this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$this->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$this->db->where('ps.skillsID');
$this->db->where_in("(SELECT skillsID FROM empwithskills where empID='$username')");
$query = $this->db->get();
$result = array();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$result[] = $row;
}
return $result;
}
return false;
If the query was like this, could you figure out how to rewrite it in codeigniter...
select ps.name
, s.the
, p.rojects
, y.ou
, a.ctually
, w.ant
, r.eturned
from projectskillslist ps
LEFT
JOIN empskillslist s
ON s.skillsID = ps.skillsID
LEFT
JOIN projects p
ON p.projectID = ps.projectID
JOIN empwithskills x
ON x.skillsID = ps.skillsID
where x.empID = 'test';
first get array of skill ids
then apply array
in $this->db->where_in()
.Like below..
$this->db->select('skillsID');
$this->db->where('empID',$username);
$skillsIDs = $this->db->get('empwithskills')->result_array();//array of skills ids
$this->db->select("*");
$this->db->from('projectskillslist ps');
$this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$this->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$this->db->where_in('ps.skillsID',$skillsIDs);
$query = $this->db->get();
$result = array();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$result[] = $row;
}
return $result;
}
return false;
Try this
$this->db->select("*");
$this->db->from('projectskillslist ps');
$this->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$this->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$this->db->where('ps.skillsID' in (SELECT skillsID FROM empwithskills where empID='$username'), NULL, FALSE);
$query = $this->db->get();
$this->db->select("*");
$this->db->from('projectskillslist ps');
$this->db->where('`ps.skillsID` IN (SELECT skillsID FROM empwithskills where empID=`test`)', NULL, FALSE);
$CI->db->join('empskillslist s', 's.skillsID = ps.skillsID', 'left');
$CI->db->join('projects p', 'p.projectID = ps.projectID', 'left');
$query = $CI->db->get();
Does this help ?
Haven't tried it but should work, difficult without knowing your schema...
$query = $this->db->select('*')
->join('empwithskills ews', 'ews.empID = '.$username, 'inner')
->join('empskillslist s', 's.skillsID = ps.skillsID', 'left')
->join('projects p', 'p.projectID = ps.projectID', 'left')
->get('projectskillslist ps');
if ($query->num_rows() > 0) {
return $query->result_array();
}
return false;
.
You can simply use the $this->db->query()
method to execute it.
$query = $this->db->query("select *
from projectskillslist ps LEFT JOIN empskillslist s
ON s.skillsID = ps.skillsID LEFT JOIN projects p
ON p.projectID = ps.projectID where ps.skillsID
IN (SELECT skillsID FROM empwithskills where empID='test')");
if ($query->num_rows() > 0) {
return $query->result();
}else{
return FALSE;
}