Şimdi Ara

Ms Sql İle Recursive Kategori-Alt Kategori Yapısı SP. Hakkında

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
11
Cevap
0
Favori
2.908
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaslar benim şöyle bir tablo yapım var

    Category Tablosu

    CategoryID-ParentCategoryID-Name......

    Article Tablosu

    ArticleID-CategoryID-Title-Content......


    Category tablosundaki yapıda sınırsız agac yapısı olusuyo yani her bi kategoriye bi alt kategori açılabiliyor.Eğer ParentCategoryID null ise o ana kategori olmakta
    Şimdi benim yapmak istedigim şu internette baya bi örnek var gibi am aistedigimi tam olarak bulamadım.Örnegin parametre olarak herhangi bir kategory geldigi zaman o kategorinin altındaki tüm kategorilerdeki articleları article tablosundan listelemek.Bunu tam olarak nasıl yapabilirim.İşe yarar bi kaynak gösterebilir misiniz?



    < Bu mesaj bu kişi tarafından değiştirildi korn18 -- 16 Temmuz 2014; 20:21:15 >



  • Şu şekilde pratik olarak sorunumu çözdüm arkadaslar sonradan görüpte ihtiyacı olanlar için

    WITH CTE (CategoryID) AS
    (
    select CategoryID from Category WHERE CategoryID=@CategoryIDParameter
    UNION ALL
    select C.CategoryID FROM Category AS C ,CTE WHERE C.ParentID=CTE.CategoryID

    )
    select * from Article as A inner join CTE on CTE.CategoryID=A.CategoryID WHERE --Diger Kosullar
  • merhaba,
    ben de asp.net c#'da benzer bir uygulama geliştirmekteyim. acaba parametre olarak verdiğim kategoriID'sine ait tüm alt kategorileri nasıl elde edebilirim, sizin örneğiniz sql ile yapılmış sql'de çok iyi değilim sadece basit sorgular yapabiliyorum procedyre yada programcıklar yazamıyorum. acaba sorunumu c#'da yazacağım bir fonksiyonla çözemezmiyim. yada daha basit bir sql cümleciği ile, iyi çalışmalar...
  • quote:

    Orijinalden alıntı: oyyono

    merhaba,
    ben de asp.net c#'da benzer bir uygulama geliştirmekteyim. acaba parametre olarak verdiğim kategoriID'sine ait tüm alt kategorileri nasıl elde edebilirim, sizin örneğiniz sql ile yapılmış sql'de çok iyi değilim sadece basit sorgular yapabiliyorum procedyre yada programcıklar yazamıyorum. acaba sorunumu c#'da yazacağım bir fonksiyonla çözemezmiyim. yada daha basit bir sql cümleciği ile, iyi çalışmalar...

    Projende veritabanı kullanmıyo musun?
  • evet sql 2012.
  • quote:

    Orijinalden alıntı: oyyono

    evet sql 2012.

    Tamam işte önceden yazdıgım sql sorgusu ile yapabilirsin
  • KK_Categories tablosu
    CategoryID, UpCategoryID, CategoryName ve Descreption alanlarından oluşmakta amacım ise örneğin UpCategoriID'is 2 olan kategorinin altındaki tüm altkategorileri elde etmek. articles, producs yada başka bir tablo ile ilişkilendirme yok şu an için tek tabloda herşey.

    CategoryID---UpCategoryID--CategoryName
    1---------------0-----------------Binalar
    2---------------0-----------------Depolar
    3---------------0-----------------Laboratuvar
    4---------------1-----------------İdari Bina
    5---------------1-----------------Alım Binası
    6---------------4-----------------İç Mekan
    7---------------4-----------------Dış Mekan
    8---------------6-----------------Odalar

    kategori tablom yukardaki gibi ben binaların categoryId'sini parametre olarak gönderdiğim zaman onun altın yer alan tüm alt kategorilere ulaşmak istiyorum sonuç olarak (Binalar, İdari Bina, Alım Binası, İç MEkan, Dış Mekan, Odalar) elde etmeliyim.

    Cevapların için çok teşekkür ederim.



    < Bu mesaj bu kişi tarafından değiştirildi oyyono -- 26 Kasım 2014; 18:16:16 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: oyyono

    KK_Categories tablosu
    CategoryID, UpCategoryID, CategoryName ve Descreption alanlarından oluşmakta amacım ise örneğin UpCategoriID'is 2 olan kategorinin altındaki tüm altkategorileri elde etmek. articles, producs yada başka bir tablo ile ilişkilendirme yok şu an için tek tabloda herşey.

    CategoryID---UpCategoryID--CategoryName
    1---------------0-----------------Binalar
    2---------------0-----------------Depolar
    3---------------0-----------------Laboratuvar
    4---------------1-----------------İdari Bina
    5---------------1-----------------Alım Binası
    6---------------4-----------------İç Mekan
    7---------------4-----------------Dış Mekan
    8---------------6-----------------Odalar

    kategori tablom yukardaki gibi ben binaların categoryId'sini parametre olarak gönderdiğim zaman onun altın yer alan tüm alt kategorilere ulaşmak istiyorum sonuç olarak (Binalar, İdari Bina, Alım Binası, İç MEkan, Dış Mekan, Odalar) elde etmeliyim.

    Cevapların için çok teşekkür ederim.

    Tamam yukardaki koddai ParentID olan yer ebeveyn yani bir üst IDli kategori yani sendeki UpCategoryID tek tablo kullanıyosan ona göre düzenlemen lazım kodu yukardaki kordda kategori ve onları kullandıgım makaleler tablosu var




  • Sorunun kaynağını buldum, kullandığım sql sürümü biraz eski projede MS SQL 2000 kurulu ve recursive tablo sorguları için WITH fonksiyonunu desteklemiyor. Bende data üzerinde satır satır gezerek hardcode yazarak sonuca ulaştım, kulağı tersten göstermek gibi oldu sonuca ulaştım ama performans kaybı yinede rahatsız edici, yardımların için teşekkür ederim.

    private string _catIdler;

    //Belirtilen kategoriye ait tüm alt kategorilerin idlerini getirir...
    public string GetAllCategoryById(TreeNode tumAltKategoriler, KK_Categories tumKategoriler, int categoryId)
    {
    _catIdler = categoryId.ToString();
    _catIdler += ",";

    foreach (KK_Category kkCategory in tumKategoriler)
    {
    if (kkCategory.UpCategoryID == categoryId)
    {
    var parentCategory = new TreeNode {Text = kkCategory.CategoryName, Value = kkCategory.ID.ToString()};
    var upCategoryId= kkCategory.ID;
    tumAltKategoriler.ChildNodes.Add(parentCategory);

    _catIdler += kkCategory.ID;
    _catIdler += ",";


    FillCategory(parentCategory, upCategoryId);
    }
    }

    return _catIdler.Remove(_catIdler.Length - 1, 1);
    }

    public int FillCategory(TreeNode parent, int upCategoryId)
    {
    var altKategoriler = new KK_Categories();
    altKategoriler.Load(upCategoryId);

    if (altKategoriler.Count > 0)
    {
    foreach (KK_Category kkCategory in altKategoriler)
    {
    var childCategory = new TreeNode {Text = kkCategory.CategoryName, Value = kkCategory.ID.ToString()};
    //sql sorgusunda kullanılmak üzere global değişkene idler ekleniyor...
    _catIdler += childCategory.Value;
    _catIdler += ",";
    var tempCategory = kkCategory.ID;
    parent.ChildNodes.Add(childCategory);
    FillCategory(childCategory, tempCategory);
    }
    return 0;
    }
    return 0;
    }



    < Bu mesaj bu kişi tarafından değiştirildi oyyono -- 28 Kasım 2014; 10:01:55 >




  • Free versiyonu kurup çalıştırabilirsiniz.
     Ms Sql İle Recursive Kategori-Alt Kategori Yapısı SP. Hakkında



    < Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 28 Kasım 2014; 19:34:01 >
  • aynı sonucu elde ettim sql performansı çok daha yüksek. çok teşekkür ederim yardımlarınız için...

    WITH Kategoriler AS (SELECT KategoriID, KategoriAdi, UpKategoriID
    FROM KKKKategori
    WHERE (UpKategoriID = 1)
    UNION ALL
    SELECT c.KategoriID, c.KategoriAdi, c.UpKategoriID
    FROM KKKKategori AS c INNER JOIN
    Kategoriler AS m ON c.UpKategoriID = m.KategoriID)
    SELECT KategoriID, KategoriAdi, UpKategoriID
    FROM Kategoriler AS Kategoriler_1
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.