在 Mysql 上它可以正常工作。
PG::Error: ERROR: 对于 SELECT DISTINCT,ORDER BY 表达式必须出现在选择列表 LINE 1 中:) ORDER BY programs.rating DESC、program_sc... ^ :
询问:
SELECT DISTINCT "programs".* FROM "programs" INNER JOIN "program_schedules" ON "program_schedules"."program_id" = "programs"."id" WHERE (programs.rating >= 5 AND program_schedules.start >= '2012-11 -03 23:14:43.457659') AND (ptype = 'movie') ORDER BY programs.rating DESC,program_schedules.start DESC
导轨代码:
@data = Program.joins(:program_schedules).where('programs.rating >= ? AND program_schedules.start >= ?',5, Time.now).order('programs.rating DESC, program_schedules.start DESC') .uniq
我试过了
Program.select("programs.*, program_schedules.*).joins(:program_schedules).where(...
但是,这样,当我要阅读
@data.program_schedules
我得到一个 nil 值(当我知道没有 nil 值时)
PostgreSQL 9.2 (Heroku)、Ruby 1.9.2
关于我的数据库的一些信息:
class Program < ActiveRecord::Base
has_many :program_schedules
end
class ProgramSchedule < ActiveRecord::Base
belongs_to :program
end
架构数据库
create_table "program_schedules", :force => true do |t|
t.integer "program_id"
t.datetime "start"
end
create_table "programs", :force => true do |t|
t.string "title",
t.string "ptype"
end
编辑: 我不需要订购“programs_schedules”,因为我需要与该程序相关的数组中的所有programs_schedules。