Giriş Yap Kayıt ol Online Üyeler Aktif Konular Arama Üyeler Forum Kuralları
Tahribat.Com | MSSQL Sınırsız Kategori Sorgusu
Tahribat.Com Forumları
Database - Veritabanı
      MSSQL Sınırsız Kategori Sorgusu
Bu Bölümde yeni konu açmak için tıklayın Konuyu cevaplamak için tık...
Konu 15 Aralik 2011 (Persembe) 13:13 tarihinde açıldı. Kısayol | Alıntı yap | Özel Mesaj
cemnet


Kayıt : 18 Eylül 2007
Erkek Üye
 

Kod tarafında döngü ile yapıyorum ancak bu performans sıkıntısı yaratmakta.

 

t-sql tarafında nasıl bir sorgu yazmak lazım ki en son kıvrımda olan kategori_id numarasını verince adım adım en tepesinde olan kategori adini versin bize?

 

id                adi            ust_id

1                 bilgisayar     0 

2                 araba          0

3                 BMW          2

4                 3.1            3

5                 3.1 yeniKasa  4

 

5 numaralı id'yi prosedure vereceğiz o da bize en üst kıvrıma kadar gidecek işte..

 

Pls Help Me! 


Tarayıcı dayanışması istiyoruz.. Bitsin bu savaş yıllarca kaç webmasterın canını aldınız yetmedi mi? 
15 Aralik 2011 (Persembe) 15:07 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
omerelili


Kayıt : 8 Temmuz 2007
Azerbaycan / Bakü
Erkek Üye
 

id=5 çağırdığında ne olmasını istiyorsun? anlamadım hocam


VEREM olsaydında VEREN olmasaydın. 
15 Aralik 2011 (Persembe) 15:30 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
TeRRoR


Kayıt : 6 Nisan 2007
Ankara
Erkek Üye
 

cemnet bunu yazdı:
-----------------------------

Kod tarafında döngü ile yapıyorum ancak bu performans sıkıntısı yaratmakta.

 

t-sql tarafında nasıl bir sorgu yazmak lazım ki en son kıvrımda olan kategori_id numarasını verince adım adım en tepesinde olan kategori adini versin bize?

 

id                adi            ust_id

1                 bilgisayar     0 

2                 araba          0

3                 BMW          2

4                 3.1            3

5                 3.1 yeniKasa  4

 

5 numaralı id'yi prosedure vereceğiz o da bize en üst kıvrıma kadar gidecek işte..

 

Pls Help Me! 


-----------------------------

Döngü yerine recursive method ile belki daha hızlı yapabilirsin ancak her halükarda ParetnID'ye göre ChildNode'ları select etmen gerekecek.


en iyi ölüm kendi karar verdiğin ölümdür 
15 Aralik 2011 (Persembe) 15:44 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
Cosmic
(Harlem)


Kayıt : 14 Haziran 2006
Erkek Üye
 

şuan ki haliyle tek sorguda istediğini yapabilmen mümkün değil gibi. derinlik diye bi alanın daha olsaydı onun sayısı kadar tabloyu join edip çıkartabilirdin istediğin sonucu


Bu profil 05-10-2011 tarihinden itibaren 609 tekil hit ve 1437 normal hit almistir. 
15 Aralik 2011 (Persembe) 17:06 tarihinde yazıldı. Kısayol | Alıntı yap | Özel Mesaj
cemnet


Kayıt : 18 Eylül 2007
Erkek Üye
 

Alttaki t-sql ile sorun çözüldü

Çözüm: Common Table Expressions (CTE), Recursive

 

 

WITH Kat

(KategoriID, KategoriAdi, UstKatID, HierarchyLevel) AS

(

   -- Base Method

   SELECT

      KategoriID,

      KategoriAdi,

      UstKatID,

      1 as HierarchyLevel

   FROM Kategori

   WHERE KategoriID=31

 

  UNION ALL 

 

     SELECT

      k.KategoriID,

      k.KategoriAdi,

      k.UstKatID,

      k2.HierarchyLevel + 1 AS HierarchyLevel

   FROM Kategori k

      INNER JOIN Kat k2 ON

         k2.UstKatID = k.KategoriID

)

 

SELECT *

FROM Kat

ORDER BY HierarchyLevel desc

 

 


Tarayıcı dayanışması istiyoruz.. Bitsin bu savaş yıllarca kaç webmasterın canını aldınız yetmedi mi? 

[1]


Bu Bölümde yeni konu açmak için dıklayın Konuyu cevaplamak için tık...
Allah'a Havale Et Google Bookmark'a Ekle Yahoo'ya Ekle Stumbleupon'a Ekle Facebook'a Ekle Twitter'a Ekle   Google'da Ara : MSSQL sınırsız kategori sorgusu Favorilerime Ekle Yukarı Çık
Konuda 5 Mesaj Var.
Konu 570 Sefer Gösterilmiş.
2001-2012 © Tahribat Group - Her Hakkı Saklıdır. - ● Gizlilik İlkeleri ● Kullanım Koşulları ● İletişim