ベタなやり方だけど、そこそこ早いし、凝っている時間もないので・・・(^^;
- リーフから見て、ルートまでのパスを取得するための再帰関数を作る
CREATE FUNCTION dbo.GetProductParents
(
@CatID int,
@Path varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
DECLARE @ParentID int
DECLARE @Ret varchar(max)
SELECT @ParentID = ParentID
FROM m_ProdCategory
WHERE ID = @CatID
SET @Ret = @Path + '/' + LTRIM(STR(@CatID)) + '/'
IF @ParentID > 0
SET @Ret = dbo.GetProductParents(@ParentID, @Ret)
RETURN @Ret
END
- リーフとパスを連結するビューを作る
CREATE VIEW [dbo].[V_Product_Parents]
AS
SELECT ProductID,
dbo.GetProductParents(ProdCatID, '') AS Parents
FROM dbo.m_ProdCatDetail
- 取得時のSQL文
SELECT m.CD,
m.JName
FROM V_Product_Parents v
inner join m_Product m
on v.ProductID = m.ID
WHERE v.Parents like '%/251/%'