简体   繁体   English

将mysql where_in查询更改为codeigniters活动记录

[英]change mysql where_in query to codeigniters active record

is it possible to right this query 是否可以纠正此查询

`$sql = '
    SELECT *
    FROM employers
    LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id
    WHERE employers.employer_id
    IN (SELECT employers_employer_id FROM jobwall)
';

$this->db->query($sql);`

as active-record in codeigniter 作为代码记录器中的活动记录

I agree with Joe Stefanelli, the LEFT JOIN and the WHERE IN subquery are unnecessary with a normal join. 我同意Joe Stefanelli的观点,对于普通联接来说,不需要LEFT JOIN和WHERE IN子查询。 The following should do what you want: 以下应该做您想要的:

$this->db->join('jobwall'
    , 'jobwall.employers_employer_id = employers.employer_id');
$this->db->get('employers');

You would use a LEFT JOIN only if you wanted to get all employers whether or not they were in the jobwall table. 仅当您想让所有雇主(无论他们是否在工作表中)都需要使用LEFT JOIN。

I was searching for same. 我在找一样的东西。 Then got appropriate answer. 然后得到适当的答案。

$this->db->select('employers_employer_id');
$this->db->from('jobwall');

$subquery = $this->db->_compile_select();
$this->db->_reset_select();
$subquery = str_replace("\n"," ",$subquery);

$this->db->where_in('tag_page_id', $subquery, false); //false=if no escape for subquery 
$this->db->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id','left');
$this->db->get('employers');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM