2 ضمیمه
بدست اوردن تمامی parent های یک نود
با سلام.
من یه جدول برای دسته بندی دارم
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 هاش نشون بدم.
ضمیمه 150286
واگه بخوام فقط یک نود (مثلا deptid 13 )را توی یک ردیف با parent هاش نشون بدم کار نمیده و خروجی زیر را داره
ضمیمه 150287
نقل قول: بدست اوردن تمامی parent های یک نود
سلام
میشه یکم بیشتر توضیح بدید. شما depid رو برابر 13 قرار دادید و در کل یک ردیف اطلاعات هم بیشتر ندارید که depid اون برابر 13 باشه. قطعا خروجی یک ردیف بیشتر نیست.
نقل قول: بدست اوردن تمامی parent های یک نود
سلام
من تست کردم با همین ساختار و کد ها.
خروجی درست بهم می داد.
فقط شرط رو اینطوری گزاشتم
SELECT * FROM departmentcte t where t.deptid = 13
ORDER BY treepath;
نقل قول: بدست اوردن تمامی parent های یک نود
نقل قول:
نوشته شده توسط
mmbguide
سلام
میشه یکم بیشتر توضیح بدید. شما depid رو برابر 13 قرار دادید و در کل یک ردیف اطلاعات هم بیشتر ندارید که depid اون برابر 13 باشه. قطعا خروجی یک ردیف بیشتر نیست.
ممنون از شما
میخوام خروجی تصویر ضمیمه 2 برای depid 13 مثل depid 13 در خروجی تصویر 1 باشه
نقل قول: بدست اوردن تمامی parent های یک نود
ممنون hamid_hr
بله همینا میخوام.
ولی فک کنم شرط را اینجا بزارم اشتباهه
چون اول میره تمام نود ها را پردازش میکنه و بعد فقط توی خروجی اونی که میخوایم را نشون میده.
حالا اگه تعداد نود ها زیاد باشه و من فقط یکیش را بخوام پردازش زیادی انجام میشه
نقل قول: بدست اوردن تمامی parent های یک نود
نه درسته
خود sql server متوجه میشه و با کمترین هزینه اجراش میکنه