【发布时间】:2010-03-12 17:38:48
【问题描述】:
选择 *
来自jobs
WHERE(选择不同的工作。*
FROM 工作,job_requests
WHERE (jobs.user_id = 1) 或
(job_requests.user_id = 1 AND job_requests.job_id = jobs.id)
)
这个sql给了我:
Mysql::Error: Operand should contain 1 column(s).
如果我从 where 子句中执行选择,它会起作用
SELECT DISTINCT jobs.* FROM jobs, job_requests
WHERE (jobs.user_id = 1) OR
(job_requests.user_id = 1 AND job_requests.job_id = jobs.id)
有人能解释一下为什么吗?此查询由 rails activerecord 生成,因此需要主选择。
密码:
has_many :my_jobs, :class_name=>"Job", :finder_sql =>
'SELECT DISTINCT jobs.* ' +
'FROM jobs, job_requests ' +
'WHERE (jobs.user_id = #{id}) OR ' +
'(job_requests.user_id = #{id} AND job_requests.job_id = jobs.id AND job_requests.request_status IN ("requested", "confirmed") )'
【问题讨论】:
-
你能显示生成此类查询的 RoR 代码吗?
-
是的,我也添加了 ror 代码。基本上我想检索用户是所有者的工作和他被应用的工作(通过job_requests有工作),但我希望它们一起进行进一步过滤。
标签: sql mysql ruby-on-rails activerecord