與表

2012-07-09 22 views
0

的列匹配陣列I具有特定日期稱爲array_of_dates的陣列。與表

而且我有一個與列「日期」和「計數」叫my_table表。

有沒有辦法讓我寫活動記錄查詢來匹配my_table中的'date'列和array_of_dates並返回哈希值?所有array_of_dates是日期,所有的是從my_table「計數」;返回零作爲如果存在於array_of_dates日期並不在my_table列「日期」存在。

在此先感謝。

回答

1

試試這個:

Model.select("date, count"). 
    where(:date => array_of_dates). 
    reduce(Hash.new(0)){ |h, r| h[r.date] = r.count;h} 
1

的SQL看起來是這樣的:

SELECT date_col AS key, count(t.date_col) AS value 
FROM (
    SELECT unnest('{2012-07-08, 2012-07-09, 2012-07-10}'::date[]) AS date_col 
    ) x 
LEFT JOIN tbl t USING (date_col) 
GROUP BY date_col; 

的關鍵因素是與unnest()子查詢和LEFT JOIN,而不是一個普通的加盟。

values將是0如果未找到匹配的日期,因爲count(t.date_col)不計算NULL值。