【发布时间】:2011-01-04 22:25:43
【问题描述】:
是否可以纠正这个查询
`$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 中的活动记录
【问题讨论】:
-
不确定我是否遵循
LEFT JOINto jobwall 和WHERE...IN子句的目的。如果employees.employer_id 必须是IN那个子查询,那么你不能简单地使用INNER JOIN代替吗? -
你能告诉我你的意思吗?但是我想要实现的是显示公司名称,然后显示与公司相关的工作列表,进行内部连接显示公司拥有的每项工作的公司名称
-
您的子查询选择用于连接条件的同一列
employers_employer_id。如果雇主.employer_id 必须是该子查询的IN,那么您实际上已将LEFT JOIN转换为INNER JOIN。所以,我认为查询可以简化为:SELECT * FROM employers INNER JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id -
这个问题是我可能在 jobwall 表中有多个来自雇主的条目,这意味着它会多次显示雇主,我只想显示雇主一次然后列出工作雇主
-
@sea_1987:我已经给出了where...in..的活动记录查询。
标签: php mysql codeigniter activerecord