2014-11-09 2 views
0

데이터베이스에 두 개의 테이블이 있습니다.SQL은 ID가 일치하는 두 테이블을 결합합니다

Movies 테이블 :

+---------------------------------------- 
| ID | title    | timestamp | 
+---------------------------------------- 
| 1 | The host    | time  | 
| 2 | Fight Club   | time  | 
| 4 | 21     | time  | 
----------------------------------------+ 

Movie_Links 테이블 :

SELECT * FROM `Movies` 
WHERE `title` LIKE '%The Host%' 
ORDER BY `timestamp` DESC DESC LIMIT 30 
: 나는 단지 title 예를 들어 같은입니다 Movies 테이블에서 행을 선택하고 순간

+---------------------------------------+ 
| ID | link     | movie_id | 
+---------------------------------------+ 
| 1 | some link   | 1   | 
| 2 | some link   | 1   | 
| 3 | some link   | 1   | 
+---------------------------------------+ 

하지만 내가 원하는 것은 무엇입니까? o do는 위의 쿼리와 동일하지만 Movie_Links 테이블에 movie_id이 같고 Movies 테이블의 ID이되고 Movie_id이 모두 1 인 모든 링크를 가져옵니다.

+1

읽기 겠다는 통증이 만듭니다. 나는 그것을 고쳤다. 미래의 게시물에서 일반적인 대문자 사용에 대해 미리 감사드립니다. :) – stakx

답변

0

그냥 일치하는 열을 조인

SELECT * FROM movies m 
JOIN MovieLinks ml 
ON ml.movie_id = m.id 
WHERE m.title LIKE '%The Host%' 
+0

글쎄, 내가 쿼리하려고하지만'호스트 '라는 이름의 영화가 2 개 밖에 없지만 이제는 그 영화에 대해 46 개의 모든 링크를 반환합니다. –

+0

이 쿼리는 이름이' % The Host %', id가 1 인 영화에 대해서만 링크를 얻고 싶다면 어디에서'where m.ID = 1'로 변경할 것인가. – artm

0

(내가 그 위의 질문 필드 참조 해달라고으로 절에 의해 제거 순서)에 가입하십시오 :

SELECT m.*, ml.link 
FROM movies m join Movie_Links ml 
ON m.id = ml.movie_id 
WHERE m.title LIKE '%The Host%' 
AND m.id = 1 
AND ml.id = 1 
--ORDER BY `featured` DESC,`date_added` DESC,`released` DESC LIMIT 30 
0

당신이 이런 식으로 뭔가를 시도 할 수를 조인 :

SELECT * FROM 'movies' 
WHERE 'title" LIKE '%The Host%' 
AND Movies.id = Links.id 
AND Links.id = 1 
ORDER BY 'featured' DESC, 'date_added' DESC, 'released' DESC LIMIT 30 
1

테스트를 다음 쿼리를 :

제목 경우에 대비하여 전체 포스트를 대문자로
SELECT ml.id,m.title,m.timestamp, ml.link 
FROM movies m ,Movie_Links ml 
WHERE m.id=ml.movie_id and title LIKE '%The Host%' 

BR,

관련 문제