2013-12-22 2 views
0

두 개의 테이블 (배우와 영화)과 이들을 연결하는 세 번째 테이블 역할이 있습니다. ActorId는 액터의 기본 키입니다. MovieCode는 무비 테이블의 기본 키입니다. 나는 영화가 출판 된 날짜, 영화의 이름과 배우의 역할을 보여줄 필요가있는 배우 페이지를 가지고있다. 내 쿼리는 다음과 같습니다내부 결합의 데카르트 제품

SELECT mo.date, mo.title, role.roleDescription 
FROM movies mo, role 
inner join actors 
on role.actorId=actors.actorId 
inner join movies 
on role.movieCode=movies.movieCode 
where role.actorid=2 

쿼리는 나에게 직교 제품을 반환합니다. 무엇이 문제 일 수 있습니까? 미리 감사드립니다!

답변

0

는,이 시도 : 그래서를 제거하고 선명도에 대한 약간의 구조 조정 당신은 두 번 영화에 합류합니다

SELECT mo.date, mo.title, r.roleDescription 
FROM movies mo, 
INNER JOIN role r 
ON r.movieCode=mo.movieCode 
WHERE r.actorid=2 
2

movies에 두 번 접속하면 문제가 발생합니다. 한 번은 mo으로, 한 번은 movies으로 표시됩니다. moON 절 또는 WHERE 절에서 절대로 언급되지 않으므로 mo 값을 필터링하지 마십시오. 또한

SELECT movies.date, movies.title, role.roleDescription 
FROM role 
inner join actors 
on role.actorId=actors.actorId 
inner join movies 
on role.movieCode=movies.movieCode 
where role.actorid=2 

당신이있어 이후, 당신이 정말로, (가) actors에 가입하지 않아도 :이 문제를 해결하려면, 단지 movies 대신 momovies mo, 부분을 제거하고 사용하도록 SELECT -list의 필드를 변경 actors에서 아무것도 선택하지 않고 원하는 값이 actorid 인 것을 이미 알고 있습니다. 쿼리도, 당신은 배우 테이블에 가입 건너 뛸 수 있습니다 특정 배우의 영화와 배우의 역할을 선택합니다 이후

SELECT movies.date, 
     movies.title, 
     role.roleDescription 
    FROM movies 
    JOIN role 
    ON role.movieCode = movies.movieCode 
WHERE role.actorid = 2 
; 
+0

대단히 감사합니다 !!! :) – user3125917

+0

@ user3125917 : 오신 것을 환영합니다! – ruakh

관련 문제