复杂的查询融化我的大脑! Rails和Postgres

时间:2013-03-20 04:32:05

标签: ruby-on-rails database postgresql

如果我在这里遗漏了一些非常明显的东西,我很抱歉,但希望你能让我感到幽默!

我有这些模型

Employee - with id, first_name, last_name
Shift Type - with id, shift_name
Date Indices - with id, date
Locations - with id, location
Allocated shifts - with employee_id, shift_type_id, date_index_id, location_id

现在我可以编写查询,显示我已分配的班次并加入地点,名称等。但我的目的是能够生成一个表格,将日期作为列,员工作为行来生成这样的名单

______________________________________________

|employee|date 1     |date 2     | date 3    |
|'dave'  |early shift|late shift |day off    |
|'martha'|day off    |early shift|early shift|

我确定我只是非常愚蠢,但我怎样才能创建这些“虚拟”列并将它们链接到员工?

1 个答案:

答案 0 :(得分:2)

您正在寻找“pivot”或“交叉表”查询。 Postgres有额外的模块tablefunc。有关答案的更多信息:
PostgreSQL Crosstab Query

很多关于SO的类似问题的链接。