簡體   English   中英

將mysql where_in查詢更改為codeigniters活動記錄

[英]change mysql where_in query to codeigniters active record

是否可以糾正此查詢

`$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);`

作為代碼記錄器中的活動記錄

我同意Joe Stefanelli的觀點,對於普通聯接來說,不需要LEFT JOIN和WHERE IN子查詢。 以下應該做您想要的:

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

僅當您想讓所有雇主(無論他們是否在工作表中)都需要使用LEFT JOIN。

我在找一樣的東西。 然后得到適當的答案。

$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