C# ve SQL İç İçe Select Kullanımı & Windows Combobox Doldurmak

Ağustos 10, 2016 Mustafa BÜKÜLMEZ 0 Yorum



Merhabalar arkadaşlar.

Simdi de ic ice select kullanimina bir bakalim

Arkadaslar simdi sorabilirsiniz bunu nerde kullanacaz diye

Orn 3 adet tablomuz olsun

1 personeller
  1 1 personel_kodu
  1 2 personel_adi

2 musteriler
  2 1 musteri_kodu
  2 2 musteri_adi

3 satislar
  3 1 s_musteri_kodu
  3 2 s_temsilci_kodu
  3 3 satis_miktari

Bu sekilde tablolarimiz tamamlanmis oldu simdi sorgumuza gecelim ama once biraz aciklama yapalim

Şimdi arkadaşlar, sql de kayıt yada güncelleme yaparken " Kod " kullanmanız her zaman daha performanslıdır. Daha da açacak olursak.

Yukarıdaki örnek tablolarda görüyorsunuz. Hem Adı stunu var hem Kodu stunu var. Program içerisinde bu kodları ve adları combobox'a doldurursunuz.(onu da anlatacağım birazdan.) görünen kısım adı olur değeri ise kodu olur. sql. insert yada update içerisinde de değerini kaydedersiniz. Bunun amacı performans kazanımı ve Database boyutunda kazanım sağlamaktır.
Şimdi düşünün;

SQL de "Mustafa BÜKÜLMEZ"  mi daha fazla kaplar, daha zor çağırılır yoksa "R01" yada "1" mi?
(int her zaman daha çok performans sağlar mümkünse int olarak tutun değilse mümkün mertebe kısa kodlar kullanın). 
Şimdi bu konu üzerinde de iç içe select konusu ortaya çıkıyor.

Burada da bir handikap var tabi. İç İçe Select te de birden fazla sorgu çalışacak. Doğrudur. E o zaman nerde kaldı performans? diye düşünebilirsiniz ki çok haklısınız. Bende öle düşünüyorum ama yine de çok aşırı bir fark olmasada bu yöntem daha performanslıdır. Ek olarak boyutsal bir kazanımımız da var.

Devam edelim..

Tablomuzda personel kodu ile musteri kodu kaydedildi fakat kullanici nerden bilecek kodlarin kime ait oldugunuİç İçe Select ile kullaniciya isimleri gosterecegiz

Simdi sorgumuzu yazalim

Select
(Select personel_adi from personeller where personel_kodu = s_temsilci_kodu) as temsilci_adi
,(Select musteri_kodu from musteriler where musteri_kodu=s_musteri_kodu) as musteri_adi
,satis_miktari as miktar

Su anda personel kodunu gordugu yere personel tablosunda bulunan adi getirecektir

Şimdi de yukarıda bahsettiğimiz combobox doldurma işlemine de bakalım.

Datatable dt =  sql.ShowTable("Select personel_adi , personel_kodu from personeller ");
//sorgumuzu yazdık. 
//combobox doldurma işlemi
combobox1.DataSource = dt; // datatable yi datasource ye atadık
combobox1.DisplayMember = "personel_adi "; //görünecek adı
combobox1.ValueMember = "personel_kodu "; // görünen adın değeri


İnsert yada Update içerisinde de şu şekilde kullanılır


combobox1.SelectedValue; // seçili satırın  değerini alır kaydeder
combobox1.SelectedText; // seçili satırın  text ini alır kaydeder
combobox1.SelectedIndex; // seçili satırın  sıra sayısını alır kaydeder (0,1,2, olarak devam eder.)


Bu arada arkadaşlar Datatable dt =  sql.ShowTable.... daki sql.ShowTable kısmı kendi SQLConnectionClass' ımla ilgilidir. Yani her sql işleminde bir dünya kod yazmak yerine kendime ait  SQLConnectionClass hazırladım ve onu kullanarak işlemlerimi yapıyorum. Adına takılmayın istediğiniz ismi verebilirsiniz. sqlclass, sqlconnection  vs. vs. vs. ama arkadaşlar bu classı veremem bu classı kendinize göre hazırlamalısınız. 

Saygılarımla
Mustafa BÜKÜLMEZ
http://mustafabukulmez.com/







0 Yorum: