我有一些名为array_of_dates
的某些日期。
我有一个名为my_table
的表格,其中包含'date'和'count'列。
我有没有办法编写一个有效的记录查询,以便将my_table
中的“日期”列与array_of_dates
匹配并返回哈希值?所有键是来自array_of_dates
的日期,所有值是来自my_table
的'count';如果在array_of_dates
的“日期”列中my_table
中的日期不存在,则返回零作为值。
提前致谢。
答案 0 :(得分: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
个值。
答案 1 :(得分:1)
试试这个:
Model.select("date, count").
where(:date => array_of_dates).
reduce(Hash.new(0)){ |h, r| h[r.date] = r.count;h}