2013-10-20 387 views
0

我一直在盯着我的代碼一個多小時,我仍然無法弄清楚我的查詢有什麼問題。 我收到錯誤消息: 的ActiveRecord :: StatementInvalid:PG ::語法錯誤:錯誤:語法錯誤或接近 「)」 38行:??WHERE(?ABS(AX2 - )/ <)如何使用sql查找並綁定?

query = %Q{ 

    SELECT 

    avg(ax2), 
    avg(ay2), 
    avg(az2) 

    FROM (

    SELECT 
     avg(t1) as t2, 
     avg(n1) as n2, 
     avg(ax1) as ax2, 
     avg(ay1) as ay2, 
     avg(az1) as az2 

    FROM ( 

     SELECT 
     avg(t) as t1, 
     avg(n) as n1, 
     avg(ax) as ax1, 
     avg(ay) as ay1, 
     avg(az) as az1 

     FROM obds 
     WHERE uid = #{uid} AND (ev = 6011 or ev = 6012) 
     GROUP BY 
     round(t,3), 
     round(n,3) 
    ) 

    AS derivedTable1 
    GROUP BY round(t1 + 0.0005,3), round(n1 + 0.0005,3) 
) 
    AS derivedTable2 
    WHERE (abs(ax2 - ?)/? < ?) #<<<<< Line with error 
} 

binds = [ uid, x_average, x_average, THRESHOLD_FOR_RESTING ] 
result = Ozd.find_by_sql query, binds 

回答

0

的答案是,查詢必須分開綁定數組。

binds = [ query, uid, x_average, x_average, THRESHOLD_FOR_RESTING ] 
results = Ozd.find_by_sql binds 
0

試試這個WHERE (abs((ax2 - ?)/? < ?))代替

+0

hey did that worked? –

+0

你爲什麼要把小於參數放在abs值函數中? –

+0

oops,可能b我理解錯了.. –