2011-03-07 2 views
1

에 조인 나는 영화 카탈로그SQL 다수의 내부는 내가 현재 온라인 유료 컨텐츠를 제공하는 것을 목표 작은 시작에서 프로그래머로 일하고 같은 분야

에 대한 메타 데이터 데이터베이스를 개발하기 위해 할당 된 두 개의 주 테이블 동영상사람이 있습니다. * movie_ID * 및 * people_ID *는 각 테이블의 기본 키입니다. 두 테이블 모두 다 대다 관계입니다. 예를 들어 나는 현재 링크 테이블을 사용하고 다른 관계를 표현하기 위해

, actor_movie는 * movie_ID * 및 해당 저장하는 것 * people_ID * 영화에서 배우의 각각의 director_movie 표를 저장하는 것입니다 동안 * movie_ID *와 감독 (들) * people_ID *. 작가, 작곡가 및 제작자도 마찬가지입니다.

내 문제는 모든 액터, 감독, 제작자, 작가, 작곡가 등을 하나의 단일 테이블로 반환하여 프론트 엔드 웹 UI에서 목록으로 전달해야하는 것입니다. 영화에 관련된 모든 사람들의

나는 movie_ID * 및 * people_ID *를 기반으로 모든 링크 테이블을 함께 조인 한 다중 SELECT 쿼리를 작성한 다음 명에있는 각 사람의 세부 정보를 반환하는 방법에 관해서 현재 난처한 편입니다. 테이블도 있습니다.

그리고 내가 지금까지 쓴 것의 예를

은 다음과 같습니다

SELECT 
movie.idMovie, 
movie.titleMovie, 
movie.descMovie, 
movie.dateMovie, 
movie.runtimeMovie, 
movie.langMovie, 
movie.ratingMovie, 
people.namePeople 
FROM 
htv_movie movie 

INNER JOIN htv_actorlinkmovie acm ON acm.idMovie = movie.idMovie 
INNER JOIN htv_directorlinkmovie dcm ON dcm.idMovie = movie.idMovie 
INNER JOIN htv_producerlinkmovie pcm ON pcm.idMovie = movie.idMovie 
INNER JOIN htv_people people WHERE people.idPeople = dcm.idPeople AND people.idPeople = acm.idPeople AND people.idPeople = pcm.idPeople 

그리고 그것은 하나에서 모든 관련 사람들을 반환해야합니다 : 나는 일이하고 싶은 무엇

SELECT 
movie.titleMovie, 
people.namePeople, 
FROM 
movie movie 

INNER JOIN actorlinkmovie acm ON acm.idMovie = movie.idMovie 
INNER JOIN people people ON people.idPeople = acm.idPeople 

입니다 영화.

전적으로 전체 데이터베이스 (처음으로 실제로)를 디자인 할 때 상당히 새로운 기능을 갖추고 있으며, 약 5000 개의 영화 (현재 회사 목표). 이 데이터베이스는 웹 사이트의 백엔드 역할도합니다.

감사합니다.

업데이트 : PHP 변수와 템플릿 SQL 쿼리를 사용하여 일시적으로 더러운 솔루션을 해결했습니다. 여러 개의 내부 조인을 한 것처럼 보이는 것은 결국 필요하지 않습니다. 생각해 줘서 고마워.

+0

각 개인의 모든 행과 각 행의 컨텍스트/부분을 동영상의 안이나 뒤에 숨기고 싶습니까? 또는 "Director (s)", "Writer (s)", "Actor (s)"등의 모든 이름을 표시하는 한 열을 원하십니까? – DRapp

+0

가능하면 여러 열을 선호합니다. –

답변

0

당신은이 같은 목표 달성 할 수

영화

FROM

SELECT에서 moviename, dbo.GetDirector (MovieID), dbo.GetActors (MovieID), dbo.GetWriter (MovieID)

  • dbo.GetDirector (MovieID)은 DIR을 반환하는 함수이다 의사의 경우 입니다.
  • dbo.GetActors (MovieID)는 동영상의 액터를 반환하는 함수입니다.
  • dbo.GetWriter (MovieID)는 동영상의 작성자를 반환하는 함수 입니다.

다른 테이블이있는 경우 해당 테이블의 기능도 만들 수 있습니다.

희망이 도움이됩니다.

관련 문제