MsSql Join Yapısı Ders 12 Devam..
Merhaba,
Yine uzun bir ara oldu. Geç olsun güç olmasın. Kaldığımız yerden devam edelim istedim.
Hemen Ms Sql Management Studio ve ardından yenii bir Query page açalım.
Database adıız ISTANBUL idi.
1 |
Use ISTANBUL |
 diyerek hangi db üzerinde çalışacağımızı belirleyelim.
Ardından da hızlıca ders adlarımızı eklemeye başlayalım. Şimdilik 4 adet ders adı ekliyorum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
INSERT INTO DERS (DERSADI) VALUES ('TÜRKÇE') GO INSERT INTO DERS (DERSADI) VALUES ('FİZİK') GO INSERT INTO DERS (DERSADI) VALUES ('KİMYA') GO INSERT INTO DERS (DERSADI) VALUES ('BİYOLOJİ') GO INSERT INTO DERS (DERSADI) VALUES ('MATEMATIK') f5 tuşumuza basıyoruz ve derslerimizi ekliyoruz. Şimdide bir kaç ders notu ve öğrenci numarası ekleyelim.  USE ISTANBUL  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (1,95,1)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (2,40,1)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (3,78,1)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (4,65,1)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (1,90,2)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (2,80,2)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (3,60,2)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (4,70,2)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (5,100,2)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (1,80,3)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (2,40,3)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (3,30,3)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (4,70,3)  GO  INSERT INTO DERSNOTLARI (ID_DERS,DERSNOTU,ID_OGRENCI) VALUES (5,60,3) |
Evet öğrenciler ile ders notlarını da eklediğimize göre artık sorgulama işlemine geçebiliriz.
İlk olarak öğrencilerimizin matematik dersine ait notlarını getirelim.
1 2 3 4 5 |
SELECT DE.DERSADI,(O.OGRENCIADI+' '+ O.OGRENCISOYADI) AS ADISOYADI,D.DERSNOTU Â FROM (DERSNOTLARI D INNER JOIN OGRENCI1 O ON D.ID_OGRENCI = O.ID_OGRENCI) Â INNER JOIN DERS DE ON DE.ID_DERS = D.ID_DERS WHERE DERSADI = 'MATEMATIK' |
Bu sorguyu çalıştırdığımızda öğrencilerimizin matematik dersine ait notlarını görüntülemiş olacağız. Şimdi cümlemizi analiz edelim.
Select * from DERSNOTLARI bu cümle ile dersnotları tablosundaki tüm dataları çekebilmekteyiz. Ancak biz bu tablodan tüm dataları çekmek değil, bu tablodaki dataları kullanarak başka tablolarla ilişki kurmak istiyoruz.
Bu noktada devreye JOIN yapısı girmektedir. Join bir önceki dersimizde de bahsettiğimiz üzere iki tablo arasında uniqe olan değerler üzerinden ilişki kurmamıza yarayan ifadeye verilen addır.
Kullanım şekli :
1 2 3 |
 SELECT (O.OGRENCIADI+' '+ O.OGRENCISOYADI) AS ADISOYADI,D.DERSNOTU  FROM DERSNOTLARI D INNER JOIN OGRENCI1 O ON D.ID_OGRENCI = O.ID_OGRENCI |
Dersnotu tablosuna D
Ogrencı1 tablosuna da O kısaltmasını verdik ve O tablosundan ogrenicini adı ve soyadını, D tablosundan da Dersnotlarını çekmek istedik.
Bu iki tablo arasında öğrenci id si üzerinden ilişki kurabiliriz. Bu işlemide ;
1 |
DERSNOTLARI D INNER JOIN OGRENCI1 O ON D.ID_OGRENCI = O.ID_OGRENCI |
bu cümle ile yapmaktayız. Yukarıdaki örnekte verdiğim gibi birden fazla tabloyu bağlamak için  joinin başına parantez açıp yapmış olduğumuz join işleminin sonuçlarını başka bir tablo ile tekrar join yapabiliriz.
İyi Günler Dilerim,
Cevapla
Want to join the discussion?Feel free to contribute!