Sql row' ları tek hücrede toplama

12.08.2011

* Hangi Gazeteyi Okursunuz ?
* Hangi Ürünleri satın aldı ?
* Hangi servislerden faydalandı ?
* Hangi Ödeme tipleri kullanıldı ?

Vs vs gibi 1-N ilişkili tablolarda kullanılan birden çok Row'u tek hücrede birleştirmek için kullandığımız 2 yolu mevcuttu.

1) Büyük datalarda çok performans kaybı yapsa da kullanımı oldukça kolay olan bir sql function içerisinde CURSOR ile tüm datayı dönerek, string bir return almak.

2) FOR XML Path ile datayı tek hücrede alarak işlemek.

3)

DECLARE @Data varchar(100) = '';

SELECT @Data = @Data + [Data] + ', '
FROM[Table1]

SELECTSUBSTRING(@Data,0,LEN(@Data))

3.Örneği blogumuza kazandıran Can Batu'ya teşekkürler.


0 kişi tarafından 0 olarak değerlendirildi

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Sql Server 2008, , ,

For Döngüsü Length - Görünmez Performans

12.08.2011
Hepimizin hayatının bir parçası olan for döngüsü:

DataTable dt = new DataTable();
for (int i = 0; i < dt.Rows.Count; i++)
{
                        
}

Ne kadar masum duruyor değilmi ??

Oysa programatik olarak işleyişini düşünün birde, 
i=0; 
işlemler gerçekleşiyor
i ++
i = 2

i = 2 < dt.Rows.Count 
döngü her item için datatable' ın rowcount işlemini almaya çalışıyor. Oysa ne gerek var. Zaten döngünün kaç kere döneceğini biliyoruz.

int rowcount = dt.Rows.Count;
for (int i = 0; i < rowcount; i++)
{

}

0 kişi tarafından 0 olarak değerlendirildi

  • Currently 5.0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C#.NET, ,