2012-02-21 100 views
0

我有一个数据库有四个表格:ParentCategory,ChildCategory,ItemsCategoriesItems。名为ItemsCategories的表是一个连接表,因为Item中的一行可以在ChildCategory中多次列出。所有表中的主键都被命名为IDChildCategory中的外键列是ParentCategoryID,而ItemsCategories中的外键是ItemIDChildCategoryID如何获取儿童用品的儿童用品?

我需要写一个SELECT查询,鉴于当ParentCategoryName将返回Items列表。 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 2012-02-21 20:49:10

回答

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