Как использовать WHERE IN в Rails 3, который работает в системах баз данных?

Я довольно новичок в Rails и немного опыт работы с языками типа SQL.

Я работаю над проектом на Rails 3, где моя тестовая версия продукта и версия продукта моего менеджера проекта используют две разные системы баз данных (я использую MySQL, но я не уверен, что он использует).

У меня здесь есть общий SQL-оператор, который я хочу работать с ОБА наших баз данных. Есть ли способ сделать это только с помощью функции ActiveRecord?

SELECT * FROM MyRecords 
WHERE  (f1, f2, f3, f4) IN (
    SELECT f1, f2, f3, f4
    FROM   MyRecords
    GROUP  BY f1, f2, f3, f4
    HAVING count(*) = 1 
);

Другими словами, я пытаюсь выполнить инструкцию "WHERE IN" (и, честно говоря, я даже не знаю, что делает инструкция WHERE IN, просто этот ответ делает то, что мне нужно: как я могу (или могу ли я) ВЫБЕРИТЕ DISTINCT для нескольких столбцов?) Чтобы быть более точным, я должен дополнить следующую функцию ActiveRecord, чтобы она выполняла вышеуказанный запрос:

  def MyRecordFunction
    MyRecords.where('org_id=?', self.org_id).order('f4')
  end

Спасибо.

1 ответ

Ознакомьтесь с Руководством по ActiveRecord http://guides.rubyonrails.org/active_record_querying.html

Там есть некоторая информация об указании условий на соединения и тому подобное.

Не может быть более конкретным, потому что вы не указали, с какой другой БД вы хотите совместимость.

Другие вопросы по тегам