MSSql Join Yapısı Ders 11

Merhaba,

Bu dersimizde Sql de join yapısını inceleyeceğiz. Join yapısı tablolar arasında Unique (Benzersiz) değerler kullanarak birleştirme, farklı farklı tablolardan aynı yapıya ait dataları çekerek tek bir alanda görüntüleme, bu sayede yönetimi kolaylaştırma amacıyla kullanılan yapıya verilen addır. Ancak Sql de anlatıma başlamadan önce güncel yaşantımızdan bir örnek vererek nerelerde kullanılabileceğine ve hangi durumlarda ihtiyacımız olabileceğine değinmek isterim.

Bir okulumuz olsun. Bu okulda 10 tane sınıfımız olsun. Her sınıfta da 40 tane öğrencimiz olsun. Her bir öğrencinin aldığı 10 tane ders olsun. Her bir dersin 3 tane sınavı olsun ve ilk sınavları bitmiş olsun. Şu an itibari ile ortalaması 45 in altında olan öğrencilerin adları ve ev telefon numaralarını bulalım ki ailelerini arayıp herhangi bir sorun olup olmadığını teyid e edebilelim.

Şimdiye kadarki bilgilerimizle sql de bu tabloları oluşturabilir miyiz. Tabi ki oluşturabiliriz ancak oluştururken dikkat etmemiz gereken bazı trickler bulunmaktadır. İşte burada olayın mantığını anlıyor olacağız.

Hatta okul dan bir üst kademe daha ekleyelim. Belediyede olsun. Belki incelenir de yaptığımız örneği hayata geçirirler 🙂

Şimdi en baştan yapıyı kuralım.

DATABASE ADIMIZ ISTANBUL OLSUN


Her yazdığımız kod blogundan sonra f5 sekmesine basıp kodu çalıştırmamız gerekmektedir. Örn :


(bunu yazıp f5 e basarsak oluşturduğumuz ISTANBUL adlı database? i seçmiş ve bundan sonra yapacağımız işlemleri bu database üzerinde yapacağımızı belirtmiş oluruz.

Şimdi tablolarımızı oluşturmaya başlayalım.


Benim tavsiyem kodları kopyalamak yerine bakarakda olsa kendiniz yazın yaptığınız yanlışlar aklınızda daha iyi oturmasına neden olacaktır.


Şu an tüm tablolarımızı oluşturduk. Peki neyi neden yaptık.

 Aslında yukarıda tablolar arasında güzel bir ilişki yapısı oluşturduk. Tek tek açıklayacağım :
Belediye ve Okul tablosu arasındaki ilişki

Bildiğiniz üzere bir belediyede birden fazla okul olabilir ki hiçte olmayabilir. Biz birden fazla olabilir yapısı üzerinde duracağız.

Örneğin Üsküdar Belediyesi nin sınırları içerisinde kaç tane okul vardır. Belki 10 belki 20 peki biz bunları sistemde nasıl tutabiliriz.

Okul Adı Belediye Adı

A Okulu Üsküdar

B Okulu Üsküdar

C Okulu Kadıköy

D Okulu Üsküdar

Aslında yukarıda bir tablo yaptık ve hangi okulun hangi belediyede olduğunu görebiliyoruz. Üsküdar okulları diye bir arama yaptığımızda karşımıza 3 tane sonuç gelecektir. Ancak biz şunu biliyoruz ki (Bilmeyebilirsiniz 🙂 ) yazılımlarda işlemler en hızlı şekilde sayılar üzerinden yapılmaktadır. Ayrıca şu an 4 kayıt var görebiliyoruz ya bu 1000 olsaydı yada abartalım 20000000 olsaydı o zaman da sayacak mıydık ? İşte burada yaptığımız sistem devreye girmektedir.

Üsküdarda olan tüm okulları getir. Nasıl ?

Hemen sisteme kayıtlarımızı girmeye başlayalım. Önce 3 tane belediye oluşturalım.


Şimdede okul bilgilerinin girişini yapalım :


 

Araya go komutunu koyarak birden fazla scripti ard arda çalıştırabileceğimizide bilgilerimiz arasına eklemiş olduk.

Insert yaparken okul adlarının hemen yanında bulunan sayıların beledıylerımıze ait Id ler oldugu konusunda sanırım anlaşılmayan bir nokta yoktur.Var ise lütfen yorumlara yazınki düzeltebilelim.

Hemen sorgumuzu yazıyoruz.

Seç okuladını okul tablosundan nerede belediyesi Üsküdar ise

Yukarıda yazdığım bildiğiniz sqlin TÜRKÇE?si


Bunu zaten yapabilirdik. Peki ben desem e okul adlarını getirdikde nerden bileyim bunların Üsküdarda olduğunu ??

Hemen geldik yazdık


 

 A OKULU 1

B OKULU 1

C OKULU 1

Gelen sonuç bu! 1 benim için hiç bir şey ifade etmiyor. Kadıköyde olabilir, Saksıda olabilir

Hemen ekliyoruz joini ;


 

 Kelime Kelime gidelim.

Select = Seç

O.OKULADI = OKUL Tablosundaki OKULADI

B.BELEDIYEADI = BELEDIYE Tablosundaki BELEDIYEADI

OKUL O = OKUL Tablosunu kısaltıp O dedik

JOIN = Birbirine ekle (Sadece 2 taraftada da doğru olan sonuçları. Bu ne demek açıklayacağım.)

BELEDIYE B = BELEDIYE Tablosunu kısaltıp B Dedik

ON = İlişki kurma hazırlıkları 🙂

O.ID_BELEDIYE = B.ID_BELEDIYE = İşte kilit nokta bu 2 tablo arasındaki ilişki bu iki kolon üzerinden kurulmaktadır. Bu kolonlardaki bilgiler iki tablo içinde aynı şeyi ifade etmektedir. Kolon İsimlerinin aynı olmasına aldanmayın biri ahmet biri mehmet te olabilirdi.

Burada önemli olan.

Ikı tabloda içerisinde INT tipinde değerler barındırıyor.

İkiside Belediyelere ait olan ID Leri barındırıyor.

Yani ben ikisinde de 1 dediğimde aynı USKUDARI bana işaret etmektedir.

Burada anlaşılmayan bir şey yoktur umarım var ise lütfen yine yorumlara eklersiniz.

Gelen sonuç :

A OKULU USKUDAR

B OKULU USKUDAR

C OKULU USKUDAR

Bu değilse eyvah 🙂 Yukarıdaki yaptıklarımıza bir kez daha göz atın derim. Zira çalışması lazım 🙂

Buraya kadar olan kısımda bir dersi tamamladık. Bir sonki dersimizde sınıfları öğrencileri ve dersleri oluşturup yukarıda verdiğimiz örneği tamamlayacağız. Yazım hatalarım olabilir dilbilgisi kısmına takılmazsanız sevinir,

İyi Günler Dilerim,

0 cevaplar

Cevapla

Want to join the discussion?
Feel free to contribute!

Bir Cevap Yazın