SQL Server 2008 R2'deki verileri takip etmeliyim. SQLFiddle
Şema:
CREATE TABLE [dbo]. [ICFilters] ( [ICFilterID] [int] KİMLİK (1,1) NULL DEĞİL, [ParentID] [int] NULL DEĞİL DEĞİL [FilterDesc] [varchar] (50) NULL DEĞİL, [Aktif] [tinyint] NULL DEĞİL DEĞİL CONSTRAINT [PK_ICFilters] PRIMARY KEY CLUSTERED ([ICFilterID] ASC) İLE PAD_INDEX = KAPALI, İSTATİSTİK_NORECOMPUTE = KAPALI, IGNORE_DUP_KEY = KAPALI, ALLOW_ROW_LOCKS = AÇIK, ALLOW_PAGE_LOCKS = AÇIK ) [PRIMARY] AÇIK ) [PRIMARY] AÇIK [Dbo]. [ICFilters] INSERT [ParentID, FilterDesc, Etkin) Değerler (0, 'Ürün Türü', 1), (1, 'ProdSubType_1', 1), (1, 'ProdSubType_2', 1), (1, 'ProdSubType_3', 1), (1, 'ProdSubType_4', 1), (2 'PST_1.1', 1), (2 'PST_1.2', 1), (2 'PST_1.3', 1), (2 'PST_1.4', 1), (2 'PST_1.5', 1), (2 'PST_1.6', 1), (2 'PST_1.7', 0), (3 'PST_2.1', 1), (3 'PST_2.2', 0), (3 'PST_2.3', 1), (3 'PST_2.4', 1), (14 'PST_2.2.1', 1), (14 'PST_2.2.2', 1), (14 'PST_2.2.3', 1), (3 'PST_2.8', 1)
Tablo:
| ICFILTERID | PARENTİD | FİLTREÇ | AKTİF | -------------------------------------------------- | 1 | 0 | Ürün Tipi | 1 | | 2 | 1 | ProdSubType_1 | 1 | | 3 | 1 | ProdSubType_2 | 1 | | 4 | 1 | ProdSubType_3 | 1 | | 5 | 1 | ProdSubType_4 | 1 | | 6 | 2 | PST_1.1 | 1 | | 7 | 2 | PST_1.2 | 1 | | 8 | 2 | PST_1.3 | 1 | | 9 | 2 | PST_1.4 | 1 | | 10 | 2 | PST_1.5 | 1 | | 11 | 2 | PST_1.6 | 1 | | 12 | 2 | PST_1.7 | 0 | | 13 | 3 | PST_2.1 | 1 | | 14 | 3 | PST_2.2 | 0 | | 15 | 3 | PST_2.3 | 1 | | 16 | 3 | PST_2.4 | 1 | | 17 | 14 | PST_2.2.1 | 1 | | 18 | 14 | PST_2.2.2 | 1 | | 19 | 14 | PST_2.2.3 | 1 | | 20 | 3 | PST_2.8 | 1 |
Her satırın ebeveyni ve kökü vardır parentid = 0
. FilterDesc
Ben sipariş için bu ayrıştırmak için deneyin böylece ler sadece örnek açıklamalardır.
Soru
Tüm satırları ağaç benzeri bir şekilde seçmek mümkün müdür? Öyleyse nasıl? 'Ağaç benzeri' derken, tekrar tekrar ebeveynlerini seçtikten sonra bütün çocuklarını, ardından da her birinin tüm çocuklarını ve benzerlerini seçin. Derinlik ilk ağaç geçişi.
Arkadaşlarım ve ben denedik, ancak çalışma çözümlerimizde yetersiz kaldık ama denemeye devam edeceğiz. Ben sql oldukça yeni, bu yüzden belki bu kolayca yapılabilir ve ben sadece işleri zorlaştırıyorum.
Örnek (istenen) çıktı:
| ICFILTERID | PARENTİD | FİLTREÇ | AKTİF | -------------------------------------------------- | 1 | 0 | Ürün Tipi | 1 | | 2 | 1 | ProdSubType_1 | 1 | | 6 | 2 | PST_1.1 | 1 | | 7 | 2 | PST_1.2 | 1 | | 8 | 2 | PST_1.3 | 1 | | 9 | 2 | PST_1.4 | 1 | | 10 | 2 | PST_1.5 | 1 | | 11 | 2 | PST_1.6 | 1 | | 12 | 2 | PST_1.7 | 0 | | 3 | 1 | ProdSubType_2 | 1 | | 13 | 3 | PST_2.1 | 1 | | 14 | 3 | PST_2.2 | 0 | | 17 | 14 | PST_2.2.1 | 1 | | 18 | 14 | PST_2.2.2 | 1 | | 19 | 14 | PST_2.2.3 | 1 | | 15 | 3 | PST_2.3 | 1 | | 16 | 3 | PST_2.4 | 1 | | 20 | 3 | PST_2.8 | 1 | | 4 | 1 | ProdSubType_3 | 1 | | 5 | 1 | ProdSubType_4 | 1 |