【发布时间】:2012-10-24 05:58:47
【问题描述】:
在 Mysql 上它可以正常工作。
PG::Error: ERROR: 对于 SELECT DISTINCT,ORDER BY 表达式必须 出现在选择列表第 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 = '电影') ORDER BY programs.rating DESC, program_schedules.start DESC
Rails 代码:
@数据 = 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("程序.*, 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
Schema.db
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。
【问题讨论】:
-
这是一个足够复杂的查询,我只需要使用
find_by_sql -
As always:PostgreSQL 的版本?对于程序员来说应该不言而喻.. 表定义也绝不是一个坏主意。会澄清
ptype的来源。 -
好的,我已经更新了我的问题帖子
标签: ruby-on-rails ruby-on-rails-3 postgresql rails-postgresql