2011-08-22 3 views
0

내 테이블 StoreCodes 각 상점의 독특한 제품 코드 (및 적용 여부)를 보유하고, 예를 들면 :레일 3 : 여러 필드에서 COUNT/GROUP을 시도했지만 SQL 오류 발생

category:integer 
code:string 
available:boolean 
store_id:reference 

내가 3 열은 각 카테고리에 얼마나 많은 코드를 보여주는 간단한 테이블을 보여주기 위해 노력하고, 얼마나 많은거야 이 코드의 available = true

Category_number/Count_Codes_in_category/Count_Codes_in_category_available==TRUE 

내 컨트롤러에서 categoryavailable 모두에 대해 COUNT 및 GROUP을 시도하면 다음 오류가 발생합니다.

SQLite3::SQLException: near "WHERE": syntax error: SELECT category, available, COUNT(*) AS instances GROUP BY category, available WHERE (store_id = 8) 

내 컨트롤러 코드 :

@b2 = StoreCode.find_by_sql ['SELECT category, available, COUNT(*) AS instances GROUP BY category, available WHERE (store_id = ?)', @store.id] 

답변

1

SQL이 잘못되었습니다. 당신은 WHERE 절 후 GROUP BY 절을 넣어해야하고, find_by_sql를 사용할 때 당신은 또한이 같이

합니다 (FROM 절을 포함) 전체 명령문을 작성해야합니다

@b2 = StoreCode.find_by_sql ['SELECT category, available, COUNT(*) AS instances 
FROM store_codes WHERE (store_id = ?) GROUP BY category, available', @store.id] 
+0

대단히 감사합니다! – jpwynn

1

귀하의 SQL 문에는 'FROM'조항이 없다, 나는 또한 'BY GROUP'이 'WHERE'이후 올한다고 생각합니다.