这段代码在mysql运行命令中完美运行
SELECT employeeCode
FROM employee_details
WHERE employeeCode
IN (
SELECT DISTINCT (employeeCode) FROM quiz_answer_detailsWHERE submitTime
IN (SELECT MIN( submitTime ) FROM quiz_answer_details WHERE quizId
IN (SELECT id FROM quiz_details WHERE uploadtime = '2014-04-03')
AND answer IN (SELECT answer FROM quiz_details WHERE uploadtime = '2014-04-03'))
)
但是我想在我的代码点火器上使用此代码,但它不起作用。
我的代码点火器查询代码是
$this->db->select('employeeCode');
$this->db->from('employee_details');
$this->db->where_in('employeeCode');
$this->db->select('DISTINCT(employeeCode)');
$this->db->from('quiz_answer_details');
$this->db->where_in('submitTime');
$this->db->select('min(submitTime)');
$this->db->from('quiz_answer_details');
$this->db->where_in('quizId');
$this->db->select('id');
$this->db->from('quiz_details');
$this->db->where('uploadtime',"2014-04-03");
$this->db->where_in('answer');
$this->db->select('answer');
$this->db->from('quiz_details');
$this->db->where('uploadtime',"2014-04-03");
$query=$this->db->get();
print_r($query);
if($query->num_rows>=1)
{
return $query;
}
else
{
return false;
}
出了什么问题请帮助我
问题在于这段代码和随后类似的where_in
用法
$this->db->where_in('employeeCode');
您已经给出了 where 参数值,但没有给出要匹配的内容。
例如。
$this->db->where_in('employeeCode',$subQuery1);
where_in
的文档:
$this->db->where_in();
在 ("项目"、"项目") SQL 查询中生成一个 WHERE 字段,该字段与 AND 联接 如果合适
$names = 数组('Frank', 'Todd', 'James'); $this->db->where_in("用户名",$names);产生:哪里用户名 IN("弗兰克","托德","詹姆斯")
您必须为每次调用 where_in
创建一个单独的子查询。
您应该重新编写子查询并使用连接以获得更好的性能,而无需提供有关表/关系和所需结果的完整信息 我无法为您提供新查询,但您可以在活动记录的 where 函数中使用子查询
$subquery=" SELECT DISTINCT (employeeCode) FROM quiz_answer_detailsWHERE submitTime
IN (SELECT MIN( submitTime ) FROM quiz_answer_details WHERE quizId
IN (SELECT id FROM quiz_details WHERE uploadtime = '2014-04-03')
AND answer IN (SELECT answer FROM quiz_details WHERE uploadtime = '2014-04-03')) ";
$this->db->select('employeeCode');
$this->db->from('employee_details');
$this->db->where('employeeCode IN('.$subquery.')',null,FALSE);
$query=$this->db->get();
您应该将第三个参数作为 FASLE 传递,以防止查询被 bactick 引用或者,您可以使用query()
函数来运行原始查询
$query=$this->db->query(' your full query here');
$query->result();