SELECT * FROM jobs
WHERE(SELECT DISTINCT作业* FROM作业,job_requests WHERE(jobs.user_id = 1)OR (job_requests.user_id。 = 1 AND job_requests.job_id = jobs.id) )SQL查询错误:操作数应包含在轨道1列(多个)
这个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生成,因此需要进行主选择。
RoR的代码:
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的代码生成这样的查询? – klew 2010-03-12 19:40:05
是的,我也添加了ror代码。基本上我想检索用户是所有者和他应用的工作(通过job_requests有工作)的工作,但我希望他们一起进一步筛选。 – dombesz 2010-03-13 00:57:52