2013-05-09 48 views
0

我试图在rails视图文件中执行SQL查询。这里是查询Mysql2 ::错误:操作数应该包含1列

scount=SubUrl.where("main_url_id=? and pc > ? and sub_id = ? and b_id > ? and dd = ?", result.id,0,@subids,0,1) %> 

但我收到以下错误。

Mysql2 ::错误:操作数应包含1列(多个):SELECT suburls * FROM suburls WHERE(main_url_id = 16和PRODUCT_COUNT > 0和sub_id = 53112110111和B_ID > 0和DD = 1)

。我认为它是因为sub_id有很多id。如何分配sub_id一次一个,并获得所需的SCOUNT

回答

0

尝试是这样的:

@scount = [] 

@subids.each do |subid| 
@scount << SubUrl.where("main_url_id=? and pc > ? and sub_id = ? and b_id > ? and dd = ?", result.id,0,subid,0,1) 
end 
+0

我尝试了你所说的。但是,当我检查子目录内容时,它将scount返回为0.它具有我想要的所有结果。但由于某种原因它返回零。 – user2218532 2013-05-09 11:08:24

1

你能使用IN代替=

scount=SubUrl.where("main_url_id = ? AND pc > ? AND sub_id IN (?) "\ 
        "AND b_id > ? AND dd = ?", result.id,0,@subids,0,1) 
0

我有同样的错误一次。它是由日期比较引起的,使用“>”和一个日期数组而不是单一日期的变量。我对这个问题的建议是密切关注你的查询,并确保你传递给它的值是他们应该做的。

编辑:虽然我的回答没有回答操作的具体问题,谷歌搜索mysql错误导致我这个问题。这里的基本概念是mysql操作数被错误地使用。在op的情况下,'in'操作数需要与括号中的值列表一起使用。 (他们滥用“=”运算符)

相关问题