我有一个包含四个表的数据库:ParentCategory
,ChildCategory
,ItemsCategories
和Items
。名为ItemsCategories
的表是一个联接表,因为Item
中的一行可以在ChildCategory
中多次列出。所有表中的主键都命名为ID
。 ChildCategory
中的外键列为ParentCategoryID
,ItemsCategories
中的外键为ItemID
和ChildCategoryID
。
我需要撰写一个SELECT
查询,当Name
ParentCategory
时,Items
会返回ParentCategory
列表。 Name
表确实包含SELECT
字段。
我不知道从哪里开始。我可以写一个ParentCategory
要返回给定类别名称的JOIN
ID,我可以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 -
这有效......
{{1}}
答案 0 :(得分: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'
那应该获取Items ID,但是您可以轻松扩展SELECT列表以包含Items表中的更多数据。
答案 1 :(得分: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