如何进行连接查询

时间:2014-06-18 12:36:36

标签: ruby-on-rails-3

我正在创建一个Rails 3.2 Web应用程序,在这个应用程序中我有三个模型。

BackendUser, Timereport, Timereport_type

后端用户报告时间,每个Timereport通过属性reason_id连接到timereport_type。 timereport_type是每个用户帐户的自定义。

Timereport_type模型有一个名为ttype的属性,它可以带两个值:

absence and precense

现在,我可以使用以下代码获取特定时间跨度的特定后端用户的所有时间报告:

Timereport.where("backend_user_id = ?", user.id).group("id, date(created_at)").created_between(from, to).select("id, date (created_at) as date, sum(total_time) as seconds")

但是我怎么能指定我想要的时间报告中哪个ttype(缺席或precense)?我知道应该有一个连接查询,但我不知道该怎么做。

我尝试了这样的查询,我不再有任何结果:

Timereport.where("backend_user_id = ? AND ttype = ?", user.id, "precence").joins(:timereport_type).group("timereports.id, date(timereports.created_at)").created_between(from, to).select("timereports.id, date (timereports.created_at) as date, sum(total_time) as seconds")

这样做的查询是:

SELECT timereports.id, date (timereports.created_at) as date, sum(total_time) as seconds FROM "timereports" INNER JOIN "timereport_types" ON "timereport_types"."id" = "timereports"."reason_id" WHERE "timereports"."account_id" = 20 AND (backend_user_id = 58 AND ttype = 'precence') AND (timereports.created_at >= '2014-06-15' AND timereports.created_at <= '2014-07-16') GROUP BY timereports.id, date(timereports.created_at)

0 个答案:

没有答案