2009-11-19 5 views
1

자료를 보유하는 다른 주제 유형을 보유한 테이블이 있습니다. 그런 다음 각 테이블의 키를 보유하는 다른 테이블을 가지고 있으므로 많은 관계를 만듭니다.SQL 쿼리 문제 AND

그러나 동일한 자료를 공유하는 두 개의 주제를 선택하기 위해 주제를 검색하려고하면 작동하지 않습니다.

예 테이블 :

재질 테이블 :

MatID | Name 
--------------- 
1  | book1 
2  | note23 

주제 테이블 :

TID | topic 
--------------- 
1 | computer 
2 | database 

MatTop 테이블 : 이것은 내 쿼리입니다

TID | MatID 
------------ 
1 | 2 
2 | 2 

:

SELECT * FROM material 
INNER JOIN mattop ON material.MatID = mattop.MatID 
INNER JOIN topic ON mattop.TID = topic.TID 
WHERE (topic.topic = 'computer') AND (topic.topic = 'database') 

어떤 도움을 주셔서 감사합니다.

EDIT - 죄송합니다. 죄송합니다. 나는 그것과 관련된 화제를 가진 자료를 출력하는 방법을 의미했다.

답변

3

두 개의 다른 주제를 얻으려면 두 번 참여해야합니다. (그래서 써니 소년 문제에 올바른 것은 where 절이지만, 또는 정답 없음)

같은 뭔가

편집 노트 (나는 테이블 그래서 테스트하지 SQL을하지 않아도됩니다) : 미안 해요 2 mattops 원래이 버전은 내가 컴퓨터와 데이터베이스의 두 항목에 사용되는 재료를 제공해야합니다 원래

SELECT * FROM material 
    INNER JOIN mattop mattop1 ON material.MatID = mattop1.MatID 
    INNER JOIN topic topic11 ON mattop.TID = topic1.TID 

    INNER JOIN mattop mattop2 ON material.MatID = mattop2.MatID 
    INNER JOIN topic topic2 ON mattop.TID = topic2.TID 


    WHERE (topic1.topic = 'computer') AND (topic2.topic = 'database') 

이 되돌 만 하나 있었다 올바른 생각합니다. where 절의 간단한 OR은 주제 중 하나 이상에 자료를 제공하지만 반드시 필요하지는 않습니다.

+0

덕분에 많이 참여하지 않는 동시에 두 가지 주제 값을 가질 수 없습니다! 나는 지금해야 할 일을 본다. – jumm

7

귀하의 문제는 where 절에 있습니다

WHERE (topic.topic = 'Design') AND (topic.topic = 'Notes') 

topic.topic는 '디자인'과 동시에 '주의'모두가 될 수 없다.

당신의 AND가 OR 일 것을 의미합니까?

1

정확하게 이해하면 동일한 자료를 공유하는 주제가 필요합니다.

SELECT t1.*,t2.* FROM topic t1 
JOIN mattop mt1 ON t1.TID = mt.TID 
JOIN mattop mt2 ON mt2.MatID = mt1.MatID 
JOIN topic t2 ON t2.TID = mt2.TID 
WHERE t2.TID <> t1.TID 

이 같은 자료를 공유하는 주제 쌍의 목록을 얻을 것이다 : 당신은 어떻게 여기

입니다. SQL들이 1 행/라인이었다 함께 것처럼 테이블을 조인하기 때문에

, 당신은 당신이 두 번 항목 표에