2012-05-17 3 views
0

게시물, 용어 및 관계가 3 개 있습니다.여러 테이블에서 MySQL 하위 쿼리 오류가 발생했습니다.

게시물 테이블 :

ID  title  
1  abc 
2  cdf 

용어 테이블 :

term_id slug 
1  jeans 
2  shirts 

관계 테이블 : 나는 "청바지"가 제목을 나열하려고하는 데 사용

object_id taxonomy_id 
1    1 
2    1 

MySQL의 쿼리 그들과 관련된

SELECT posts.title 
FROM posts, terms, relationships 
WHERE (SELECT terms.term_id FROM terms WHERE terms.slug LIKE '%jeans%') 
AND (SELECT relationships.object_id FROM relationships WHERE terms.term_id = relationships.taxonomy_id) 
AND (posts.ID = relationships.object_id) 

오류 # 1242 - 하위 쿼리가 두 개 이상의 행을 반환합니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 당신의 테이블이없는, 그래서 테스트 할 수 없습니다

SELECT posts.title 
FROM posts INNER JOIN relationships ON (posts.ID = relationships.object_id) 
      INNER JOIN terms ON (terms.term_id = relationships.taxonomy_id) 
WHERE terms.slug LIKE '%jeans%'; 

을,하지만 난이 일을해야한다고 생각 :

+0

귀하의 SQL 문이 잘못되었습니다. WHERE 및 AND의 직후에 열 이름이 필요합니다. –

답변

0

이보십시오. 이 같은

+0

매력처럼 작동합니다. 굉장하고 고마워! – Ranadeep

+0

당신은 환영합니다, 선생님 :-) –

0

시도 뭔가 :

SELECT p.title 
    FROM posts p 
    JOIN relationships r 
    ON r.object_id = p.ID 
    JOIN terms t 
    ON t.term_id = r.taxonomy_id 
WHERE t.slug LIKE '%jeans%' 
0
SELECT posts.title 
FROM posts 
    INNER JOIN relationships ON (posts.ID = relationships.object_id) 
    INNER JOIN terms ON (terms.term_id = relationships.taxonomy_id) 
WHERE 
    (terms.slug LIKE '%jeans%') 
AND 
    (terms.term_id = relationships.taxonomy_id) 
AND 
    (posts.ID = relationships.object_id)