изменить запрос mysql where_in на активную запись codeigniters - PullRequest
0 голосов
/ 05 января 2011

возможно ли исправить этот запрос

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

как активную запись в codeigniter

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Я согласен с Джо Стефанелли: в обычном соединении нет необходимости в левом соединении и подзапросе WHERE IN.Следующее должно делать то, что вы хотите:

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

Вы будете использовать ЛЕВОЕ СОЕДИНЕНИЕ, только если вы хотите получить всех работодателей, независимо от того, были они в таблице рабочих мест.

1 голос
/ 08 февраля 2012

Я искал то же самое.Затем получил соответствующий ответ.

$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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...