2012-02-21 9 views
0

У меня есть база данных с четырьмя столами: ParentCategory, ChildCategory, ItemsCategories и Items. Таблица с именем ItemsCategories является таблицей объединения, так как строка в Item может быть указана несколько раз в ChildCategory. Первичный ключ во всех таблицах называется ID. Колонка внешнего ключа в ChildCategory составляет ParentCategoryID, а внешние ключи в ItemsCategories: ItemID и ChildCategoryID.Как получить дочерние элементы дочерних элементов?

Мне нужно написать SELECT запрос, когда с учетом Name из ParentCategory будет возвращать список 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

ответ

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, чтобы содержать больше данных из таблицы Items.

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 
Смежные вопросы