2012-02-21 4 views
0

나는 4 개의 테이블을 가진 데이터베이스를 가지고있다 : ParentCategory, ChildCategory, ItemsCategoriesItems. ItemsCategories이라는 테이블은 Item의 행이 ChildCategory에 여러 번 나열 될 수 있으므로 조인 테이블입니다. 모든 테이블의 기본 키는 ID입니다. ChildCategory의 외래 키 열은 ParentCategoryID이고 ItemsCategories의 외래 키는 ItemIDChildCategoryID입니다.하위 항목의 하위 항목은 어떻게 가져 옵니까?

NameParentCategory 일 때 Items의 목록을 반환하는 SELECT 쿼리를 작성해야합니다. ParentCategory 테이블에 Name 필드가 포함되어 있습니다.

어디서부터 시작해야할지 모르겠습니다. 나는 범주 이름을 주어진 ParentCategory ID를 반환하려면 SELECT을 작성할 수 있습니다 나는 테이블을 JOIN 수 있습니다.

감사합니다.

업데이트 1 -

이 작동 ...

SELECT Item.Name 
FROM   ParentCategory 
      INNER JOIN ChildCategory ON ParentCategory.ID = ChildCategory.ParentCategoryID 
      INNER JOIN ItemsCategories ON ChildCategory.ID = ItemsCategories.ChildCategoryId 
      INNER JOIN Items ON ItemsCategories.ItemId = items.ID 
      WHERE ParentCategory.Name = 'XXX' 
+1

당신이 우리에게 몇 가지 코드를 보여줄 수? 뭔가를 시도? – Lamak

답변

1

무엇

에 대한
SELECT i.ID 
FROM ParentCategory pc 
JOIN ChildCategory cc ON cc.ParentCategoryID = pc.ID 
JOIN ItemsCategories ic ON ic.ChildCategoryID = cc.ID 
JOIN Items i ON ic.ItemID = i.ID 
WHERE pc.Name LIKE 'Name' 

항목 ID를 받아야하지만, 당신은 쉽게 더 많은 데이터를 포함하는 SELECT 목록을 확장 할 수 있습니다 그 항목 테이블에서. 내가 올바르게 모델을 이해 한 경우 확실하지

1

:

SELECT i.ID,i.Name 
FROM ParentCategory pc 
INNER JOIN ChildCategory cc 
ON pc.ID = cc.ParentCategoryID 
INNER JOIN ItemsCategories ic 
ON cc.ID = ic.ChildCategoryID 
INNER JOIN Item i 
ON ic.ItemID = i.ID 
WHERE pc.Name = @ParentCategory 
관련 문제