Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
2978
Tıklama
0
Öne Çıkarma
Ms Sql İle Recursive Kategori-Alt Kategori Yapısı SP. Hakkında
K
11 yıl
Teğmen
Konu Sahibi

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?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

K
11 yıl
Teğmen
Konu Sahibi

Ş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



O
11 yıl
Teğmen

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...


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @korn18
K
11 yıl
Teğmen
Konu Sahibi

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?


Bu mesaja 1 cevap geldi.
O
11 yıl
Teğmen

K
11 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: oyyono

evet sql 2012.

Tamam işte önceden yazdıgım sql sorgusu ile yapabilirsin


Bu mesaja 1 cevap geldi.
O
11 yıl
Teğmen

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 >
Bu mesaja 1 cevap geldi.
K
11 yıl
Teğmen
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
O
11 yıl
Teğmen

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 >
Bu mesaja 1 cevap geldi.
F
11 yıl
Yarbay

Free versiyonu kurup çalıştırabilirsiniz.
< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi fsh77 -- 28 Kasım 2014; 19:34:01 >

O
11 yıl
Teğmen

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




Bu mesajda bahsedilenler: @fsh77 , @korn18
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.