我以前做的项目里有大量的这样的表 a_20120101
, a_20120102
, a_20120103
, 简单来说表名就是 业务名_日期
, 比如有统计用户佣金的表,统计用户等级的表,统计用户销售额的表等等,这些表加起来不下千个,这些表里的记录通过 user_id 和 users 表关联,这里不讨论这样的设计有没有问题,这已经是一个客观事实没办法改变了,现在的问题就是让大家实现这么一个功能:输入开始日期,结束日期,输入用户 id, 查询出这个用户在日期范围内所有的 a_ 相关的数据。我们当时解决这个问题的方法就是手写拼 sql, 确实有点痛苦,我后来实现过一个 sql builder 叫 sqlknit https://github.com/baya/sqlknit 去实现拼 sql 的功能,弄完以后发现还不如手写 sql. 你们会怎么做?最好给出代码。
相关的话题是这个,https://ruby-china.org/topics/39399