2013-03-11 4 views
0

Я пытаюсь сделать что-то вроде этого, но я не уверен, если вы можете сделать это с внутренним соединением:SQL Inner JOIN с запросом

SELECT "scores".* 
FROM "scores" 
    INNER JOIN "games" ON "games"."id" = "scores"."games_id" 
WHERE 
    "games"."date" >= '2013-02-11 19:30:11.799227' 
AND "scores".value > 350; 

Спасибо за помощь. Кроме того, если вы знаете, как написать оператор ActiveRecord/isl, это даст запрос, который также будет полезен.

Мои модели выглядят следующим образом:

class Score < ActiveRecord::Base 
    belongs_to :game 
    delegates :date, to: game 
end 

class Game < ActiveRecord::Base 
    has_many :scores, dependent: :destroy 
end 
+1

Синтаксис SQL в порядке и должен работать правильно. Вы проверили это? –

+1

Что вы подразумеваете под оператором «ActiveRecord/arel»? –

+0

@DavidW, он говорит о запросах реляционной алгебры, которые обычно используются с рубинами на рельсах. –

ответ

0

запроса ActiveRecord будет выглядеть следующим образом:

some_date = DateTime.parse('2013-02-11 19:30:11.799227') 
score = 350 
Score.joins(:game). 
     where("games.date >= ? AND scores.value > ?", some_date, score) 

Это предполагает, что у вас есть belongs_to :game в модели Score.

+0

Это не похоже для работы, я получаю ошибку 'PG :: Ошибка Ошибка: отсутствует запись FROM-clause для таблицы 'games' – trev9065

+0

@ trev9065: У вас есть модель игры? И что такое' Workout'? – PinnyM

+0

К сожалению, это была опечатка , это игровая модель. – trev9065