активная запись codeigniter или общая справка mysql - PullRequest
2 голосов
/ 05 января 2011

Я запрашиваю базу данных, чтобы получить имена всех работодателей из моей базы данных, но я хочу получить только те, где их идентификатор присутствует в моей таблице вакансий, вот что я пытаюсь сделать.

$this->db->select('*')
    ->from('employers')
->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id', 'left');

Однако это не дает правильных результатов, как я могу выбрать всех моих работодателей из таблицы работодателей, но только если у них есть данные в таблице рабочих мест?

Ответы [ 3 ]

0 голосов
/ 25 октября 2011

Я думаю, что лучшим предложением WHERE могло бы быть:

SELECT *
FROM employers
LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id
WHERE jobwall.id IS NOT NULL

Это исключит все строки, у которых нет соответствующей работы.

Вы должны использовать любой первичный ключ вашего jobwall таблица имеет, если jobwall.id не существует.

Это также может быть легко написано с использованием ActiveRecord.

0 голосов
/ 25 октября 2011

Я вас точно не понимаю, но думаю, вам следует использовать join без left:

this->db->select('*')->from('employers')->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id');
0 голосов
/ 05 января 2011

Вам необходимо добавить предложение WHERE:

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

Я не уверен, насколько сложно это будет создать с использованием класса activerecord Codeigniter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...