0

Oracle でのビューのクエリに問題があります。

ビュー (my_cool_view) の定義は次のとおりです。

SELECT *
  FROM mview1 JOIN
       mview2 USING(col_id) 

ここで、mview1mview2はマテリアライズド ビューです。このマテリアライズド ビューの定義にアクセスできません。私はこのクエリを試しました:

select r.title from my_cool_view r;

ORA- 00918 : column ambiguously definedエラーが発生しました。my_cool_view の列のサブセットでこのエラーが発生しました。

このクエリを実行すると:

select * from my_cool_view;

すべて正常に動作します。

コメントで desc my_cool_view について質問していますが、機密情報であるためスキーマ情報を提供できません。約80列が含まれていると言えるのは1つだけで、1つ(col_id)だけが上記のエラーを引き起こしません。

何が原因で、それを修正する方法はありますか?

前もって感謝します。

誤解を招いて申し訳ありません。最初のバージョンの質問は悪すぎました。

4

1 に答える 1

2

おそらく、結合したさまざまなテーブル/ビューからのタイトルという名前の 2 つの列があります。* を選択すると、重複するタイトル列が別のエイリアス (TITLE1 など) を取得するため、これが機能します。タイトル列のいずれかを明示的に要求すると、データベースは必要な列を知る必要があるため、エラーがスローされます。

タイトル列に別のエイリアスがあることを確認してください。

   select EMP.TITLE EMP_TITLE, DEPT.TITLE DEPT_TITLE
   FROM   ...
于 2012-10-31T10:56:38.267 に答える