Kapat
Reklam Alanı
veri2
Programlama 87 0

Veritabanı İki Tabloyu Bağlama SQL Kodu

Veritabanını en aktif şekilde kullanmak için bazı kodlara ihtiyacımız oluyor. Bunlar listeleme, bağlama, büyüktür, küçüktür gibi bir çok fonksiyonlarının kullanıma ilişkin bir çok yazı dizimiz olacak. Yazı dizimizin ilki iki tabloyu SQL kodlarıyla birbirine bağlamak olacak. İki tabloyu birbirine bağlarken iki tablonun da ortak bir noktası olması gerekir. O ortak nokta bizi iki tablo arasında bilgi alışverişi yapmamıza olanak sağlayacak.

Bütün uygulamalarımız da MySQL-Front 2.2 kullanacağım dilerseniz siz de sitemizden indirerek kullanabilirsiniz. Hızlıca devam etmek için sizlere örnek için hazırladığım veritabanı dosyalarını paylaşıyorum buradan indirebilirsiniz. İndirdiğiniz test klasörünü C:\Program Files (x86)\MySQL\MySQL Server 5.0\data dizinine atmalısınız. Daha sonra MySQL Front programını açıp alt bölümde yer alan Database kısmına test yazmalısınız.

İki Tabloyu Bağlama SQL Kodu

select o.adi, o.soyadi, n.DersNo from ogrenci o join notlar n on(o.O_NO=n.O_NO);

Burada yaptığımız şey ogrenciler tablosuna o, notlar tablosuna n takma ismini takmak. o.adi= ogrenci tablosundan adi bölümünü getir demektir. n.DersNo= notlar tablosundan DersNo bölümünü getir demek.

Dileseydik select ile from arasına *(yıldız) da koyarak işlemi bitirebilirdik fakat biz sadece ad, soyad ve dersno kısmını listelemesini istediğimiz için bu alanları belirttik.

İki Tabloyu Şartlı Bağlama(Where)

Burada anlatmak istediğim ise iki tabloyu birbirine bağla fakat belirttiğim şartlara uygun kayıt ve kayıtlar var ise getir demektir. Örnek vermek gerekirse vize notu 70’den büyük olanları getir dediğim de öğrenci ve notlar tablosunu birbirine bağla ve vizesi 70 den büyük olanları getir demektir. Peki bunu nasıl yapacağız?

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where n.Vize>70 ;

Yaptığımızı hemen anlatayım. öğrenci tablosundan adi ve soyadini, notlar tablosundan ise vizeyi getir, tabloları birbirine bağla ve notlar tablosunda vizesi 70 üzeri olanları getir. Şartımıza uygun tek kayıt varmış o da benmişim 🙂

vt1

İki Tabloyu Şartlı Bağlama(Between)

Between komutu ise iki sayı arasında ki kayıtları almamızı sağlar. Örneğin vize notu 60-80 arası olan öğrencileri getir. Hemen yapalım.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where n.Vize BETWEEN 60 and 80;

vt2

Burada yaptığımız şey ise iki tabloyu birbirine bağla, şartıma bak. Nerede n.Vize’de 60 ve 80 arasında ki kişileri getir. Where kullanmak zorundayız çünkü bir şeye göre şart belirtmemiz gerekiyor yani yaşa göre, boya göre, kiloya göre bunları belirtmezsek kodumuz zaten çalışmaz ama diyelim ki çalıştı doğru sonucu alamayız.

İki Tabloyu Şartlı Bağlama(Not Between)

Peki vize notu 60-80 arasında olmayan kayıtları getirmek istediğimiz zaman ne yapacağız? Between’in başına Not ekliyoruz ve bu seferde belirttiğimiz değerler arasında olmayan kayıtları getiriyor.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where n.Vize NOT BETWEEN 60 and 80;

vt4

Vize notu 60-80 arasında olmayan kayıtları listeledik ve iki kaydımız varmış bunu görmüş olduk.

İki Tabloyu Şartlı Bağlama(IS NULL)

Peki vize notu olmayanları getirmek istediğimiz de ne yapacağız? IS NULL= “Boş” demek olduğundan boş olanları getir komutunu kullanarak istediğimiz sonucu elde edebiliriz.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where n.Vize IS NULL

vt5

Hiçbir kayıt gelmedi bu sorgunun yanlış olduğu anlamına gelmiyor sadece vize notu olmayan öğrencilerin olmadığı anlamına geliyor yani bütün öğrencilerin vize notları var.

İki Tabloyu Şartlı Bağlama(LIKE)

LIKE komutuna ayrı bir parantez açmamız gerekiyor ama örneğimiz de daha detaylı anlaşılacaktır. LIKE komutu belirttiğimiz ifadeler arasında bir değer olup olmadığını kontrol eder. Yani adının ilk harfi A olanları getir, yada adının içerisinde A harfi geçenleri getir yada adının 3.karakteri R olanları getir gibi bir çok komutu uygulayabiliriz.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where o.Adi LIKE 'H%';

vt6

Burada yaptığımız işleme hemen değinelim. LIKE ‘H%’; komutu kendisinden bir önceki alan içerisinde arama yapar yani ogrenci tablosunda ki Adi kısmından. Yapılan bu aramada adının ilk harfi H olanları getirir. Yüzde(%) işareti H harfinden sonra kaç karakter olduğu bilinmediği için kullanılır ve Hasan ismini de getirir. Hüseyin ismini de getirir.

Yüzde(%) işaretini H harfinden önce kullanırsanız ise son harfi H olan isimleri getirir.

Yüzde(%) işaretini H harfinin hem soluna hemde sağına koyarsanız Adi sütununda ki kayıtlar içerisinde isminin herhangi bir harfi H olanları getirir.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where o.Adi LIKE '%R%';

vt7

Adının üçüncü harfi R olanları getir deseydik iki tane alt çizgi ve sonra istediğimiz harfi yani R’yi koyup % işaretiyle bitiriyoruz çünkü ismin kaç harften oluştuğunu bilmiyoruz.

select o.adi, o.soyadi, n.Vize from ogrenci o join notlar n on(o.O_NO=n.O_NO) where o.Adi LIKE '__R%';

vt8

{Mert Can}

Bildiği her şeyi paylaşmak üzere naçizane güzel bir site kuran koca yürekli insan.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir