2012-02-21 11 views
0

私は4つのテーブルを持つデータベースを持っています:ParentCategoryChildCategoryItemsCategories、およびItemsです。 ItemsCategoriesという表は、Itemの行がChildCategoryに複数回リストされるため、結合表です。すべてのテーブルのプライマリキーの名前はIDです。 ChildCategoryの外部キー列はParentCategoryIDで、ItemsCategoriesの外部キーはItemIDChildCategoryIDです。子アイテムの子アイテムを取得するにはどうすればよいですか?

NameParentCategoryを指定すると、Itemsのリストが返されるSELECTというクエリを書く必要があります。 ParentCategoryテーブルにはNameフィールドが含まれています。

どこから始めるべきかわかりません。私はSELECTを書くことができますParentCategory IDにカテゴリ名を返して、私は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

アイテムのIDを取得する必要があります

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' 

について何が、あなたは簡単に、より多くのデータを格納する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 
関連する問題