سلام
فرض کنید جدول زیر را داریم
CREATE TABLE [dbo].[Table_1](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[ParentId] [int] NULL,
[Status] [bit] NOT NULL,
CONSTRAINT [PK_Table_1] 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;
INSERT INTO [dbo].[Table_1]
([Id],[Name],[ParentId] ,[Status] )
VALUES
(1,'آسیا', null, 1),
(2,'ایران', 1, 1),
(3,'شهرری', 2, 0),
(4,'کرج', 2, 1),
(5,'مهرشهر', 4, 1),
(6,'عظیمه', 4, 0);
حال می خواهم وقتی کد ایران را وارد کردم لیست تمام زیرمجموعه های غیر فعال ایران را برگرداند (فرزند اول تا فرزند فرزند....)
مثلا باتوجه به اطلاعات جدول بالا
خروجی لیست برابر با شهرری و عظیمه باشد
کد مروبطه را چگونه بنویسم
سلام
اگه اشتباه نکنم این Query کار شما رو راه می اندازه:
declare @parentId int = 2;
with tbl
as
(select *
from Table_1 t
where t.Id = @parentId
UNION ALL
select t2.*
from Table_1 t2
join tbl
on t2.ParentId = tbl.Id)
select *
from tbl
where tbl.Status = 0 and tbl.Id > @parentId
order by Id;
پرانتز قبل از order by باید بعد از with tbl as باشه! البته کپی کنی درست میشه و تو code block اشتباه نشون میده!
سلام
کعادل این کد را در سی شارپ می خواستم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)