C# Inner Join ile Çoklu Tablolardan Veri Çekme

Rooster

only business
Legend Member
Katılım
10 Ağu 2019
Konular
727
Mesajlar
3,205
Çözümler
314
Tepkime puanı
4,990
Konum
Milano
Bu yazımızda C# ile ilişkili 3 SQL tablosunu Inner Join kullanarak birleştirme ve DataGridView’de görüntüleme işlemini gerçekleştireceğiz. kutuphane veri tabanında bulunan tablolarımızı inceleyelim.

1- “ogrenci” Tablosu

2- “kitap” Tablosu

3- “islem” Tablosu


Tablolarımızı incelediğimizde “islem” tablosunda, öğrencilerin hangi kitapları aldığını alış ve veriş tarihleriyle birlikte kayıt altına alındığını görüyoruz. Fakat bu tabloyu incelediğimizde Normalizasyon Kuralları gereği sadece öğrenciye ait ogrno verisinin ve yine kitaba ait kitapno bilgisinin tutulduğunu görüyoruz.
Tablomuzu bu şekilde program içinde görüntülediğimiz zaman pek anlaşılır olmayacaktır. Örneğimizde bu tablonun öğrenci ve kitaba ait detayların görüntülenecek şekilde C# Windows Formda bulunan DataGridView kontrolüne aktarılmasını sağlayacağız.
Formumuzu basit bir şekilde oluşturacağız. Sadece bir dataGridView kontrolü ekleyeceğiz. Form_Load olayına yazacağımız kodlarla Verilerimizin istediğimiz şekilde görüntülenmesini sağlayacağız.
Kodlarımızı yazmaya başlıyoruz. Öncelikle aşağıdaki kütüphaneyi ekliyoruz.

Kod:
using System.Data.SqlClient;
Form_Load event’ ı için kodlarımız.

Kod:
 private void Form1_Load(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("server=.; Initial Catalog=kutuphane;Integrated Security=SSPI");
            DataTable dt = new DataTable();
            string sql = "Select ogrenci.ogrno, ograd,ogrsoyad,kitapadi,sayfasayisi,atarih,vtarih from ogrenci join islem on ogrenci.ogrno = islem.ogrno join kitap on kitap.kitapno = islem.kitapno";
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.Fill(dt);
            dataGridView1.DataSource = dt;         
        }
Kodlarımızı yazıp projemizi çalıştıralım.

Görüldüğü gibi islem tablosunda anlaşılmaz şekilde bulunan veriler yerine kayıttaki öğrenci ve kitaba ait istediğimiz alanların görüntülenmesini sağlamış olduk. Sütun başlıkları için Takma ad kullanmak isterseniz String sql değişkeninin aşağıdaki şekilde değiştirebilirsiniz.




Kod:
string sql = "Select ogrenci.ogrno AS [NO], ograd AS [ADI],ogrsoyad AS [SOYADI],kitapadi AS [OKUDUĞU KİTAP],sayfasayisi AS [SAYFA SAYISI],atarih AS [ALIŞ TARİH],vtarih AS [VERİŞ TARİHİ]  from ogrenci join islem on ogrenci.ogrno = islem.ogrno join kitap on kitap.kitapno = islem.kitapno";
Bu durumda proje çalıştırıldığında aşağıdaki görüntü elde edilecektir.
 

Üst