我有一个在 PostgreSQL 上运行的 rails 3.2 应用程序,并且有一些我想在视图中显示的数据,这些数据以这种结构存储在数据库中:
+----+--------+------------------+--------------------+
| id | name | sched_start_date | task |
+----+--------+------------------+--------------------+
| 1 | "Ben" | 2013-03-01 | "Check for debris" |
+----+--------+------------------+--------------------+
| 2 | "Toby" | 2013-03-02 | "Carry out Y1.1" |
+----+--------+------------------+--------------------+
| 3 | "Toby" | 2013-03-03 | "Check oil seals" |
+----+--------+------------------+--------------------+
我想显示每个名称的任务列表,以及按名称排序的名称ASC
,sched_start_date
它们应该看起来像......
本 2013-03-01 – 检查碎片 托比 2013-03-02 – 开展Y1.1 2013-03-03 – 检查油封
我开始采用的方法是对唯一名称运行查询并将它们排序sched_start_date ASC
,然后对每个名称运行查询以获取它们的任务。
要获取唯一名称列表,SQL 应如下所示。
select *
from (
select distinct on (name) name, sched_start_date
from tasks
) p
order by sched_start_date;
我想知道这是否是正确的方法(查询唯一名称,然后为他们的所有任务运行另一个查询),或者是否有更好的 rails 方式。