2013-05-24 3 views
0

데이터베이스 테이블에 대한 검색 쿼리를 수행하려고합니다. 이것은 나의 테이블 예제이다.MySQL을 기반으로 다중 테이블 선택

movies 
-------------------------- 
ID (INT) | TITLE (VARCHAR) 
-------------------------- 

actors 
------------------------- 
ID (INT) | NAME (VARCHAR) 
------------------------- 

directors 
------------------------- 
ID (INT) | NAME (VARCHAR) 
------------------------- 

ma 
------------------------------------ 
ID (INT) | MOVIE (INT) | ACTOR (INT) 
------------------------------------ 

md 
--------------------------------------- 
ID (INT) | MOVIE (INT) | DIRECTOR (INT) 
--------------------------------------- 

나는 movies에 검색 할. title, actors. name, directors. name 일부 키워드를 기반으로합니다. ma 테이블에는 movie을 참조하는 movie 필드가 있습니다. idactor을 참조하는 actor 필드 id 등등. 결과 그룹을 movie까지 표시하려고합니다. id. 문제는 내가 테이블 및 에 대한 참조를 가지고 테이블 mamd에 따라 actors 기반으로 수행하는 방법을 알아낼 수 없다는 것입니다. 문법에 대해 사과드립니다.이 질문을 가치있게 생각한다면 편집 할 수 있습니다.

그럼, 어떤 생각일까요?

답변

0

당신이

SELECT m.title, a.name AS actor, d.name AS director 
FROM movies m 
INNER JOIN ma ON (ma.movie_id = m.id) 
INNER JOIN actors a ON (a.id = ma.actor_id) 
INNER JOIN md ON (md.movie_id = m.id) 
INNER JOIN directors d ON (d.id = md.director_id) 
ORDER BY m.title 

모든

SELECT m.title, GROUP_CONCAT(a.name) AS actorS, GROUP_CONCAT(d.name) AS directors 
FROM movies m 
INNER JOIN ma ON (ma.movie_id = m.id) 
INNER JOIN actors a ON (a.id = ma.actor_id) 
INNER JOIN md ON (md.movie_id = m.id) 
INNER JOIN directors d ON (d.id = md.director_id) 
GROUP BY m.id 
ORDER BY m.title 

[편집] 선 (善)을 위해

를 위하여 .. 그냥 WHERE

추가 영화로 이것은 당신에게 그룹을 얻을이 하나 ... m.title LIKE 'KEYWORD %'또는 a.name LIKE 'KEYWORD %'또는 d.name LIKE 'KEYWORD %'

+0

그는 '키워드'를 검색해야합니다 ... !! –

+0

예, 일부 '키워드'를 검색해야하지만이 키워드를 사용해 보겠습니다. 끝나면 알려 드리겠습니다. –

+0

그리고 m.title을 선택하고 싶습니다. 배우 이름과 감독 이름이 필요하지 않습니다. –