Mysqlでは正しく機能します。
PG :: Error:ERROR:SELECT DISTINCTの場合、ORDERBY式は選択リストに表示される必要があります行1:)ORDER BY programs.rating DESC、program_sc ... ^:
クエリ:
SELECTDISTINCT"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
Railsコード:
@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
私のDBに関するいくつかの情報:
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が必要だからです。