مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rap_nb@yahoo-com

عضویت از 1392/09/16

بدست اوردن تمامی parent های یک نود

  • شنبه 11 خرداد 1398
  • 13:19
تشکر میکنم

با سلام.

من یه جدول برای دسته بندی دارم

CREATE TABLE [dbo].[AnbarCategory](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](500) NOT NULL,
	[ParentID] [int] NULL,
 CONSTRAINT [PK_AnbarCategory] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

و با کد زیر تمامی parent های هر نود را نشون میدم

     WITH departmentcte(deptid, department, ParentID, LEVEL, treepath) AS

    ( SELECT id AS deptid, Title, ParentID, 0 AS LEVEL,

    CAST(Title AS nVARCHAR(1024)) AS treepath

    FROM AnbarCategory

    WHERE ParentID IS NULL

    UNION ALL 

    SELECT d.id AS deptid, d.Title, d.ParentID,

    departmentcte.LEVEL + 1 AS LEVEL,

    CAST(departmentcte.treepath + ' -> ' +

    CAST(d.Title AS nVARCHAR(1024))

    AS nVARCHAR(1024)) AS treepath

    FROM AnbarCategory d

    INNER JOIN departmentcte
	
    ON departmentcte.deptid = d.ParentID 
	)

	 
    SELECT *

    FROM departmentcte

    ORDER BY treepath;

ولی این کار وقتی جواب میده که بخوام همه نود ها را با parent هاش نشون بدم.

واگه بخوام فقط یک نود (مثلا deptid 13 )را توی یک ردیف با parent هاش نشون بدم کار نمیده و خروجی زیر را داره

با تشکر از راهنمایی شما

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

fakhroodi

عضویت از 1400/07/05

  • شنبه 24 اردیبهشت 1401
  • 20:01

تابع رو خیلی پیچیده کردی نتونستم بخونم
خودم قبلا یک تابع نوشتم با استفاده از حلقه while ببین کارت راه می افته؟
(تو تا فیلد رو برگردوندم)

 

declare @par int =(select ParentId from Folder Where  Id =1050);
declare @t nvarchar(1000)=''

WHILE ( @par > 0)
begin

SET @par = (select ParentId from folder Where  Id = @par);
SET @t =Concat((select title from folder Where  Id = @par),'/',@t);

End
select @t  FullPath,@par par
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)