Php Codeigniter:函数中的何处
我有一个MySQL查询,你能帮我把它转换成codeigniter方式吗Php Codeigniter:函数中的何处,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个MySQL查询,你能帮我把它转换成codeigniter方式吗 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
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');
我已经试过了,但没用,我想他们会的
$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;
如果查询是这样的,您能想出如何在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';
首先获取技能ID数组,然后在
$this->db->where_in()
中应用数组
$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;
试试这个
$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();
这有帮助吗?还没有尝试过,但应该可以工作,在不了解您的模式的情况下很难
$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;
.您可以简单地使用$this->db->query()
方法来执行它
$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;
}
谢谢你的回答,但我可以。但是,我想使用where infunction@SyedMuhammadWaqas为什么?您也可以在CI中使用纯SQL语法
$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;
}