Неоднозначное имя столбца в списке выбора DataMapper для Ruby

В DataMapper у меня есть такие таблицы:

Foo
===
id            Integer
other_columns Whatever

Fuzz
===
id            Integer
other_columns Whatever

Для ассоциаций:

class Fuzz
  has 1, :foo, :child_key => :id
end

Когда я звоню: Fuzz.first.foo

DataMapper генерирует SQL следующим образом: выберите raw_sql_.* from(SELECT "ID", "OTHER_COLUMNS", "ID" FROM "FOO" WHERE... ORDER BY "ID")

Из-за предложения «ORDER BY» Oracle возвращается, говоря: неоднозначное имя столбца в списке выбора

Как избежать этой ситуации? Это устаревшая система баз данных, поэтому у меня нет возможности изменить схему.


person Josiah Kiehl    schedule 30.07.2010    source источник
comment
Если DataMapper дублирует имена столбцов, даже если вы просто запрашиваете одну таблицу, значит, она либо не работает, либо ваша конфигурация неверна.   -  person Jeffrey Kemp    schedule 02.08.2010
comment
Нет, это происходит только при следовании ассоциации. Одиночные запросы работают нормально.   -  person Josiah Kiehl    schedule 03.08.2010


Ответы (1)


Из вашего сообщения неясно, почему вы дважды добавляете идентификатор во внутренний выбор. Это потому, что вы выбираете идентификаторы из двух таблиц? Затем в списке выбора предварите их именами таблиц и дайте им псевдонимы по вашему выбору, например

SELECT FOO."ID" AS FOO_ID, "OTHER_COLUMNS", FUZZ."ID" AS FUZZ_ID
FROM FOO, FUZZ
WHERE ...
ORDER BY FOO.ID
person Frank    schedule 30.07.2010
comment
Нет, DataMapper генерирует SQL, а не я. Извините за неясность. - person Josiah Kiehl; 01.08.2010