私はこれらの3つのテーブルを持っています
Products (Id, Name)
Products_Categories (ProductId, CategoryId)
Categories (Id, ParentCategoryId)
ご覧のように
Products
toCategories
は多対多です- には親がある
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