2013-10-23 2 views
0

제품, 기능 및 연결 테이블 (다 대다) 예를 들어, ID가 3 인 피처를 갖는 모든 제품을 연결 테이블에서 가져와야합니다. 1, 2 및 3선택 관련 다 대다 테이블

link_id | product_id | feature_id 
    --------------------------------- 
    100  | 1   | 1 
    101  | 1   | 2 
    102  | 1   | 3 

사람들은 가장 간단한 방법으로 쿼리를 작성합니까? 당신은 세 가지 다른 레코드에 대한 값을 확인됨에 따라

SELECT pr.* FROM product pr, link lk WHERE pr.id = lk.product_id 
AND lk.feature_id = 1 AND lk.feature_id = 2 AND lk.feature_id = 3 

, 당신은 모든 레코드에 그들 모두를 확인할 수 없습니다

답변

0

작동하지 않습니다.

select 
    pr.* 
from 
    product pr 
    inner join link lk1 on pr.id = lk1.product_id and lk1.feature_id = 1 
    inner join link lk2 on pr.id = lk2.product_id and lk2.feature_id = 2 
    inner join link lk3 on pr.id = lk3.product_id and lk3.feature_id = 3 
0

이처럼를 수행합니다 :

SELECT pr.* FROM product pr, link lk 
WHERE pr.id = lk.product_id 
AND lk.feature_id IN (1, 2, 3) 
with ur; 

하나는 각 기능에 대한 링크 기록 전년도 세 조인 확인