2013-05-09 3 views
0

레일 뷰 파일에서 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 열 (들)을 함유한다 : suburls을 선택 * suburls (main_url_id = 16 PRODUCT_COUNT > 0 sub_id = 53,112,110,111 및 > 0 b_id 및 DD = 1)

FROM. Sub_id에는 많은 ID가 있기 때문에 그 생각합니다.

@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=SubUrl.where("main_url_id = ? AND pc > ? AND sub_id IN (?) "\ 
        "AND b_id > ? AND dd = ?", result.id,0,@subids,0,1) 
+0

나는 당신이 말한 것을 시도했습니다. 하지만 그것은 scount를 0으로 반환합니다. 내가 subids 내용을 검사했을 때 나는 원하는 모든 결과를 가지고 있습니다. 그러나 어떤 이유로 그것은 0을 반환합니다. – user2218532

1

당신이 IN 대신 = 사용할 수 있습니다 어떻게 이런 식으로 뭔가를 시도 한 번에 sub_id 하나를 할당하고 필요한 scount

0

한 번이 오류가 발생했습니다. 단일 날짜 대신 날짜 배열 인 ">"을 사용하여 날짜 비교를 수행했기 때문입니다. 이 문제에 대한 다른 사람들의 조언은 쿼리를 자세히보고 전달해야하는 값이 무엇인지 확인하는 것입니다.

편집 : 내 대답은 op의 특정 문제에 대답하지 않지만, mysql 오류로 인터넷 검색이 질문에 나를 이끌었다. 기본 개념은 mysql 피연산자가 잘못 사용되고 있다는 것입니다. op의 경우, 'in'피연산자는 괄호 안에 값 목록을 래핑하는 것과 함께 사용해야합니다. (그들은 "="연산자를 오용했습니다)

관련 문제