1

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を生成します。selectraw_sql_。*from(SELECT "ID"、 "OTHER_COLUMNS"、 "ID" FROM "FOO" WHERE ... ORDER BY "ID")

「ORDERBY」句が原因で、Oracleは次のように言っています。選択リストの列の名前があいまいです。

この状況を回避するにはどうすればよいですか?これはレガシーデータベースシステムであるため、スキーマを変更するオプションはありません。

4

1 に答える 1

0

あなたの投稿から、内部選択に ID を 2 回追加する理由が明確ではありません。2 つのテーブルから ID を選択しているからでしょうか。次に、選択リストで、それらの前にテーブル名を付け、選択したエイリアスを次のように付けます

SELECT FOO."ID" AS FOO_ID, "OTHER_COLUMNS", FUZZ."ID" AS FUZZ_ID
FROM FOO, FUZZ
WHERE ...
ORDER BY FOO.ID
于 2010-07-30T17:20:23.693 に答える