İnner Join Kullanımında Hata Alıyorum

07/01/2023, 11:52

angelos

İyi çalışmalar kolay gelsin daha önce sizlerin de yardımı ile Access üzerinden bir program tasarlayıp bitirmiştim, hem kendimi geliştirmek hemde daha iyisini yapabilmek adına Visual Studio ile aynı programı hazırladım, program kullanılıyor şu an fakat inner join kullanımı ile ilgili olarak aşamadığım bir sıkıntım mevcut.
Kod:
DataTable tbl = new DataTable();
            OleDbDataAdapter sayilar = new OleDbDataAdapter("select i.buro,i.persicil,g.gorevtur,g.gorevyeri from gorevler as g " +
                "inner join tblisbilgileri as i on g.persicil=i.persicil where gorevtur='" + label1.Text + "' ", vt.baglanti);
            sayilar.Fill(tbl);
            dggrvlistele.DataSource = tbl;
yukarıda bulunan kod ile 2 tabloyu birleştiriyorum fakat amacım persicil olarak görünen kısım yerine ad ve soyad bilgisini getirmek istiyorum bunun için de
Kod:
DataTable tbl = new DataTable();
            OleDbDataAdapter sayilar = new OleDbDataAdapter("select i.buro,p.adi+' '+p.soyad,g.gorevtur,g.gorevyeri from gorevler as g " +
                "inner join tblisbilgileri as i on g.persicil=i.persicil inner join perbilgi as p on p.sicil=i.persicil where gorevtur='" + label1.Text + "' ", vt.baglanti);
            sayilar.Fill(tbl);
            dggrvlistele.DataSource = tbl;
kodu kullanmak istiyorum fakat
Kod:
System.Data.OleDb.OleDbException: 'Syntax error (missing operator) in query expression 'g.persicil=i.persicil inner join perbilgi as p on p.sicil=i.persici'.'
şeklinde hata iletisi alıyorum. Kodumda hata nerde bilgi verirseniz çok sevinirim
07/01/2023, 14:07

angelos

Sorunun çözümünü buldum. Aynı sıkıntıyı yaşayan veya yaşayacak olanlar için 2 den fazla inner join işlemi uygulanacaksa
Kod:
DataTable tbl = new DataTable();
            OleDbDataAdapter sayilar = new OleDbDataAdapter("select i.buro,p.adi+' '+p.soyad,g.gorevtur,g.gorevyeri from (gorevler as g inner join " +
                "tblisbilgileri as i on g.persicil=i.persicil) inner join perbilgi as p on g.persicil=p.sicil where gorevtur='" + label1.Text + "' ", vt.baglanti);
            sayilar.Fill(tbl);
            dggrvlistele.DataSource = tbl;
parantez ile son join işlemin dışında kalan join işlemleri kapatılması gerekiyormuş