2013-11-01 2 views
0

2 개의 테이블이 있습니다 : 제품 및 하위 제품.sqlite에서 categoryid에 대한 모든 제품 및 관련 제품을 선택하십시오.

내가

Products: 
ItemID CategoryID Name 
A   1   Test1 
B   1   Test2 
C   2   Test3 
A1  0   Test4 
A2  0   Test5 
A3  0   Test6 
B1  0   Test7 
B2  0   Test8 
C1  0   Test9 
C2  0   Test10 
C3  0   Test11 
C4  0   Test12 

Child Products: 
ParentItemID ChildItemID 
A      A1 
A      A2 
A      A3 
B      B1 
B      B2 
C      C1 
C      C2 
C      C3 
C      C4 

그래서 parentItemID가 지정된 카테고리에있는 모든 제품을 필요

같은 카테고리 ID를하지 않아도 해당 카테고리 ID 및 관련 ChildProducts에 대한 모든 제품을 선택해야합니다, IE 카테고리 ID = 1 반환 :

Results: 
A   Test1 
A1   Test4 
A2   Test5 
A3   Test6 
B   Test2 
B1   Test7 
B2   Test8 

답변

1

SQLFiddle demo

select p1.ItemID 

from Products p1 
LEFT JOIN ChildProducts cp on p1.ItemId=cp.ChildItemID 
LEFT JOIN Products p2 on cp.ParentItemID=p2.ItemId 


    where p1.CategoryId=1 
     or 
     p2.CategoryId=1 
ORDER BY COALESCE(p2.ItemID,p1.ItemID),p2.ItemId 
관련 문제