ORA-00904 при присоединении

Я пытаюсь создать следующий вид:

CREATE OR REPLACE VIEW AlbumDistribution AS
  SELECT Album.Album_ID,
         Album.title,
         HasTrack.tracked,
         FinishedTrack.released_title,
         SUBSTR(Album.Album_ID, -1) is_distributed_as
    FROM Album A
    JOIN HasTrack HT 
      ON HT.Album_ID = A.Album_ID 
    JOIN FinishedTrack FT
      ON HasTrack.OriginatesFrom = FT.OriginatesFrom
     AND HasTrack.tracked = FT.version;

но я получаю ORA-00904 ошибка:

 ERROR at line 6:
 ORA-00904: "HASTRACK"."TRACKED": invalid identifier

Что я нахожу очень запутанным, так как я ссылаюсь на HasTrack.tracked раньше, и нет ошибки. Если я изменю порядок операторов, поместив HasTrack.OriginatesFrom = FT.OriginatesFrom последним, я получу ту же ошибку, но для HasTrack.OriginatesFrom.

1 ответ

Решение

Вы определяете псевдоним для этой и других таблиц. Вам нужно использовать псевдоним в запросе:

CREATE OR REPLACE VIEW AlbumDistribution AS
    SELECT A.Album_ID, A.title, HT.tracked,
           FT.released_title, SUBSTR(A.Album_ID, -1) is_distributed_as
    FROM Album A JOIN
         HasTrack HT
         ON HT.Album_ID = A.Album_ID JOIN
         FinishedTrack FT
         ON HT.OriginatesFrom = FT.OriginatesFrom AND
            HT.tracked = FT.version;
Другие вопросы по тегам