codeigniter活动记录或一般mysql帮助

时间:2011-01-04 21:26:13

标签: php mysql codeigniter activerecord

我正在查询数据库,以便从我的数据库中获取所有雇主的名字,但我只想获得他们的工作表中存在他们ID的那些,这就是我想要做的。

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

然而,这不会返回正确的结果,如何从雇主表中选择所有雇主,但前提是他们在作业墙表中有数据?

3 个答案:

答案 0 :(得分:0)

您需要添加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);

我不确定使用Codeigniter的activerecord类创建会有多复杂。

答案 1 :(得分:0)

我认为更好的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轻松编写。

答案 2 :(得分:0)

我完全不了解你,但我认为你应该在没有join的情况下使用left

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