的列匹配陣列I具有特定日期稱爲array_of_dates
的陣列。與表
而且我有一個與列「日期」和「計數」叫my_table
表。
有沒有辦法讓我寫活動記錄查詢來匹配my_table
中的'date'列和array_of_dates
並返回哈希值?所有鍵從array_of_dates
是日期,所有的值是從my_table
「計數」;返回零作爲值如果存在於array_of_dates
日期並不在my_table
列「日期」存在。
在此先感謝。
的列匹配陣列I具有特定日期稱爲array_of_dates
的陣列。與表
而且我有一個與列「日期」和「計數」叫my_table
表。
有沒有辦法讓我寫活動記錄查詢來匹配my_table
中的'date'列和array_of_dates
並返回哈希值?所有鍵從array_of_dates
是日期,所有的值是從my_table
「計數」;返回零作爲值如果存在於array_of_dates
日期並不在my_table
列「日期」存在。
在此先感謝。
試試這個:
Model.select("date, count").
where(:date => array_of_dates).
reduce(Hash.new(0)){ |h, r| h[r.date] = r.count;h}
的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
值。