0

私はこれらの3つのテーブルを持っています

Products (Id, Name)
Products_Categories (ProductId, CategoryId)
Categories (Id, ParentCategoryId)

ご覧のように

  • ProductstoCategoriesは多対多です
  • には親があるCategory場合とない場合があります (親もカテゴリです)。

カテゴリ(その子孫を含む)の下にあるすべての (個別の)製品を選択するストアド プロシージャを作成するにはどうすればよいですか?

私が欲しいものの擬似コード(LINQではない)の例:

Category c;
return c.GetSelfAndDescendants().Select(x => x.Products).Distinct();

私が必要とするのは、ストアドプロシージャです。

CREATE PROCEDURE [spAllProductsUnderCateg] 
    @categId int 
AS
BEGIN
    SET NOCOUNT ON;

    -- This may be completely wrong
    SELECT DISTINCT * FROM Products p
    JOIN Products_Categories ON Products_Categories.ProductId = p.Id
    WHERE...???
END
GO
4

1 に答える 1