2014-10-19 56 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

where子句必須在所有連接之後出現。

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

謝謝你,我會記住這一點。另外,同樣的問題。在執行查詢時,我得到第1行的錯誤RROR: ORA-00979:不是GROUP BY表達式 這是否意味着我需要在查詢中的某處包括COUNT,SUM等? 感謝您的迴應和幫助。 – Maddy 2014-10-19 10:27:27

+1

@Mani看看這裏的解釋http://stackoverflow.com/a/1520641/2947592 – wvdz 2014-10-19 10:29:18

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 2014-10-19 10:23:55

+0

@ Nick.McDermaid,感謝您的快速回復,只是有一個後續問題,查詢產生以下錯誤,第1行出現以下錯誤: ORA-00979:不是GROUP BY表達式。 是因爲group by表達式和count,sum等一起工作嗎?我是否需要包含其中的至少一個?我正嘗試從此查詢中打印MOVIE_TITLE,RELEASE_YEAR和ACTOR_NAME。 – Maddy 2014-10-19 10:24:45

+0

@popvitsj:我個人只在使用group時是爲了聚合別的東西。如果意圖是刪除重複我使用不同。這是我個人的偏好。沒有備忘錄。無論如何,瑪尼,這個錯誤是否出現在您的原始查詢中?很高興知道這一點。你有什麼打算使用group by?您是否嘗試過使用查詢而不使用組? – 2014-10-19 10:29:37