2009-12-04 4 views
0

나는 두 개의 테이블이 있습니다Select 문 WHERE X IN (SELECT ...)

내가 '39'의 category.parent_id 모든 PRODUCT_ID 년대를 얻을 필요가
[ product_to_category 
--------------------- 
product_id 
category_id 


[ category 
--------------------- 
category_id 
parent_id 

. 여기에 내가 노력하고있어,하지만 백 적어도 몇있을 때 비어 반환 것 :

SELECT 
product_id 
FROM 
product_to_category 
WHERE 
category_id IN (
SELECT parent_id FROM category WHERE parent_id = '39' 
) 

내가 할 수 여기에 할 노력하고있어 무엇인가?

+0

: http://stackoverflow.com/questions/1772609/procedurally-transform-subquery-into-join –

답변

6

그것을 얻었다 :

product_to_category.category_id = category.category_id ON 카테고리에 가입 category.parent_id = 39

+1

가 일반적이다 조인 어쨌든 서브 쿼리보다 빠릅니다. – steve

0
select product_id from product_to_category as ptc 
inner join category as c 
    on ptc.category_id = c.parent_id 
where c.parent_id = 39 
2

이 시도 product_to_category INNER에서 선택 PRODUCT_ID :

당신이 당신의 쿼리에 잘못하고 있었다 무엇

했다 : 참고로

SELECT product_id 
FROM product_to_category 
WHERE category_id IN 
    (SELECT category_id -- THIS IS WHERE YOUR SQL WAS INCORRECT 
     FROM category WHERE parent_id = '39')