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;