2

次のコマンドを実行すると 00904 エラーが発生する理由を誰か説明してもらえますか

SELECT "OASM"."DT_GROUPEPG".GROUPEPGID,
  "OASM"."DT_GROUPEPG".GROUPID,
  "OASM"."DT_GROUPEPG".EPGID,
  "OASM"."DT_GROUPEPG".ZAPID,
  "OASM"."LU_EPG".LASTREADTIME,
  "OASM"."LU_EPG".SERVICE_NAME,
  "OASM"."LU_EPG".SOURCE_ID,
  "OASM"."LU_EPG".ONID,
  "OASM"."LU_EPG".TSID,
  "OASM"."LU_EPG".SID,
  "OASM"."LU_EPG".TYPE_ID,
  "OASM"."LU_EPG".OPERATOR_ID,
  "OASM"."LU_EPG".URL 
FROM "OASM"."DT_GROUPEPG"
INNER JOIN "OASM"."LU_EPG"
ON "OASM"."DT_GROUPEPG".EPGID = "OASM"."LU_EPG".EPGID
ORDER BY LastReadTime;

私はまだ Oracle に慣れていませんが、Oracle はステートメントのブロックを 1 行ずつではなく実行するため、この種のクエリを実行することは有効であるという印象を受けました。現在、エラーは OPERATOR_ID 行で発生していますが、削除/コメントアウトすると、すべての LU_EPG テーブル参照が削除されるまで、エラーが 1 行上に移動するだけです。

4

1 に答える 1

0

列を参照するときにスキーマ名を指定することはできません(また、指定する必要はありません)。また、テーブルエイリアスを使用することをお勧めします(たとえばab以下の例では)。

SELECT a.GROUPEPGID,
  a.GROUPID,
  a.EPGID,
  a.ZAPID,
  b.LASTREADTIME,
  b.SERVICE_NAME,
  b.SOURCE_ID,
  b.ONID,
  b.TSID,
  b.SID,
  b.TYPE_ID,
  b.OPERATOR_ID,
  b.URL 
FROM "OASM"."DT_GROUPEPG" a
INNER JOIN "OASM"."LU_EPG" b
ON a.EPGID = b.EPGID
ORDER BY b.LastReadTime;
于 2012-09-03T01:32:23.730 に答える