2014-10-19 4 views
0

Я новичок в oracle sql. Я пытаюсь выполнить следующий запросКоманда SQL не может присоединиться к таблицам

SQL> select movie.movie_title, movie.release_year, cast.movie_title, cast.release_year 
from MOVIE movie, CAST_MEMBER cast 



                                      * 
ERROR at line 1: 
ORA-00933: SQL command not properly ended 

запрос работает Если я не присоединиться к таблице актер, но я пытаюсь извлечь имя актера из ACTOR таблицы. Я посмотрел на другие проблемы, но не мог исправить это. Если кто-то может руководствоваться тем, где я ошибаюсь.

Спасибо

ответ

2

где положение должно прийти после того, как все соединения.

select movie.movie_title, movie.release_year, cast.movie_title, cast.release_year 
from MOVIE movie, CAST_MEMBER cast 
join ACTOR actor on(actor.actor_name = cast.actor_name) 
where movie.movie_title = cast.movie_title and movie.release_year = cast.release_year 
group by cast.movie_title, cast.release_year, cast.actor_name; 

Кроме того, вы не должны смешивать два присоединиться к нотации, так что лучше написать:

select movie.movie_title, movie.release_year, cast.movie_title, cast.release_year 
from MOVIE movie 
join CAST_MEMBER cast on (movie.movie_title = cast.movie_title and movie.release_year = cast.release_year) 
join ACTOR actor on(actor.actor_name = cast.actor_name) 
group by cast.movie_title, cast.release_year, cast.actor_name; 
+0

Спасибо за это, я буду помнить об этом. Также, тот же вопрос. При выполнении запроса я получаю ошибку RROR в строке 1: ORA-00979: не выражение GROUP BY Означает ли это, что мне нужно включить COUNT, SUM и т. Д. Где-нибудь в запросе? Благодарим вас за ответ и помощь. – Maddy

+1

@ Мани посмотрите здесь, чтобы объяснить это http://stackoverflow.com/a/1520641/2947592 – wvdz

2

Я предлагаю вам не смешивать присоединиться синтаксисом:

select distinct 
movie.movie_title, movie.release_year, 
cast.movie_title, cast.release_year 
from MOVIE movie 
inner join CAST_MEMBER cast 
on movie.movie_title = cast.movie_title and movie.release_year = cast.release_year 
inner join ACTOR actor 
on actor.actor_name = cast.actor_name; 

Я также удалил группу и заменил ее на

+0

С каких это отличий лучше, чем группа? Я пропустил записку? – wvdz

+0

@ Nick.McDermaid, спасибо за быстрый ответ, только что получил следующий вопрос, запрос вызывает следующую ошибку: ERROR в строке 1: ORA-00979: не выражение GROUP BY. Это потому, что группа по выражению работает со счетом, суммой и т. Д.? Нужно ли включать хотя бы один из них? Я пытаюсь напечатать MOVIE_TITLE, RELEASE_YEAR и ACTOR_NAME из этого запроса. – Maddy

+0

@popvitsj: лично я использую только группу, когда намерение состоит в объединении чего-то другого. Если намерение заключается в удалении дубликатов, я использую разные. Это мое личное предпочтение. Нет памятки. В любом случае, Mani, эта ошибка появилась в вашем исходном запросе? Было бы хорошо это знать. Каково ваше намерение использовать группу? Вы пробовали запрос без использования группы вообще? –