我有用户和会话表。用户可以有多个会话,或者没有会话(如果用户甚至没有打开会话一次),而每个会话必须有一个用户。
我尝试创建所有用户的输出及其在特定时间范围内的会话总数。 没有时间范围,它很容易(我想......):
User.left_outer_joins(:sessions).select('users.*, COUNT(sessions.id) AS sessions_count').group('users.id')
但请记住,我试图只计算特定时间范围内的会话,所以当我添加:
User.left_outer_joins(:sessions).where('sessions.created_at > 2017-04-30 00:00:00').select('users.*, COUNT(sessions.id) AS sessions_count').group('users.id')
我无法看到在给定时间范围内没有任何会话的所有用户。这是怎么回事?有没有办法让查询更有效率?