Если вы хотите иметь верхний средний балл по основным через два университета, то SQL выглядит следующим образом, например:
SELECT major, MAX(GPA) AS GPA FROM
(SELECT major, MAX(GPA) AS GPA FROM UNIVERSITY_1
GROUP BY major
UNION
SELECT major, MAX(GPA) AS GPA FROM UNIVERSITY_2
GROUP BY major)
GROUP BY major
ORDER BY GPA DESC
Я не уверен, как выразить этот запрос в Ареле - не знаю, как это делают союзы, и это было бы хорошо знать. Тем временем вы всегда можете использовать find_by_sql для получения набора результатов из необработанного SQL.
EDIT:
Несколько Рубин-эр/Railsier способ сделать это может быть:
u_one = UniversityOne.maximum :gpa, :group => 'major'
u_two = UniversityTwo.maximum :gpa, :group => 'major'
u_combined = u_one.merge(u_two) { |k, one, two| [one,two].max }
u_combined
заканчивает тем, что хэш с основным в качестве ключа и максимального GPa через университеты как ценность.
Я хотел бы ответить на этот вопрос вопросом: почему университету 1 и университету 2 нужны отдельные таблицы? похоже, что они оба должны быть в таблице, называемой университетами. то вы можете просто вызвать University.select («DISTINCT gpa»). order («gpa DESC») – botbot
Это скорее пример. Две таблицы, на которых я фактически работаю, не могут быть объединены в одну. Извините, я должен был сделать это более ясным в этом посте. – NSchulze
Вы хотите, чтобы главный GPA для каждого майора в каждом университете? Например. если верхний Math GPA в # 1 равен 3,9, а верхний Math GPA в №2 равен 3,5, вы хотите, чтобы ваш результирующий набор включал только «Math, 3,9» или «Math, 3.5»? –