ベタなやり方だけど、そこそこ早いし、凝っている時間もないので・・・(^^;

  1. リーフから見て、ルートまでのパスを取得するための再帰関数を作る
    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


  2. リーフとパスを連結するビューを作る
    CREATE VIEW [dbo].[V_Product_Parents]
    AS
    SELECT            ProductID, 
                              dbo.GetProductParents(ProdCatID, '') AS Parents
    FROM              dbo.m_ProdCatDetail


  3. 取得時の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/%'