Mssql Server INNER JOIN - Tablo Birleştirme İşlemi / Ders 6
 

Mssql Server INNER JOIN - Tablo Birlestirme Islemi  / Ders  6(VIDEO)

Bu video çekimim de ve makalemde 2 veya daha fazla tablo birlestirmede kullanilan komut olan INNER JOIN komutunu uygulama örnek ile anlatacagim. Ve Join islemlerinde karsilasilan bir hata olan Ambiguous column name ' ' hatasinin sebebi ve çözümüne de deginecegim .

Sql Server tablo birlestirme çok siklikla kullanilan bir islemdir.Tablolar JOIN islemi ile yada JOIN islemi olmadan da birlesebilir.Join islemi olmadan yapilan birlestirm kartezyen çarpim teknigi ile olur ve bu sekilde bir birlestirme ihtiyaç duyulmadikça kullanilmaz.JOIN ile yapilan birlestirmelerde ON komutundan sonra bir kosul belirtilmek zorunlulugu vardir.Bu kosulda iki tablo birlestirirken ortak bir sütun olmasi gerekir ve o sütun üzerinde birlestirme islemi yapilmalidir bundan dolayi kaynaklanmaktadir.

Örnegin : Kategori ve Urun seklinde 2 tablom bulunsun.Kategori tablosunda Id ve KategoriAd sütunlari bulunsun. Urun tablosunda da Id , KategoriId veUrunAd sütunlari bulunsun.Yani her ürün eklenirken Kategorisi olmalidir , KategoriId degeri ile bu belirtilmelidir.Tablolarimizda da içerikleri asagidaki gibi olsun.


Istenilen su  Urun tablosundaki tüm ürünler KategoriAd'lari ile birlikte listelensin.Fakat sorun su ki Urun tablosunda KategoriAd sütunu bulunmamakta , KategoriId sütunu bulunmakta , KategoriId sütununa karsilik gelen KategoriAd degerleri Kategori tablosunda bulunmakta.

Böyle bir durumda iki tablo birlestirilir.Normal bir birlestirme islemi yapildiginda Kartezten çarpim seklinde Urun tablosundaki her satir için 3 satir listelenecektir .
SELECT * FROM Urun , Kategori  bu sekilde sorgu çalistirildiginda 18 satir listelenecektir.

Örnegin pantolon ürünü için  yukaridaki sekilde görüldügü gibi 3 satir var her satirda 3 Kategori içinde listelenmis durumda.Her ürün  için 3 kategori adi ile listeleme yapilmistir.Fakat biz yalnizca her ürün için yalnizca bulundugu kategori listelensin istiyorsak  yesile alinan alanlar içine iyi bakalim KategoriId ile Id degeri esit olanlar yalnizca listelensin deseydik pantolon için 1 satir olacakti ve giyim olacakti.

Yani bu sekilde bir sarta bagli birlestirme yapmak istiyorsa JOIN komut yapisi kullanilir.Bu dersimizde de INNER JOIN yapisini inceleyecegiz.

INNER JOIN Yapisina göre tekrar birlestirme islemini yapalim
SELECT * FROM Urun INNER JOIN Kategori ON Urun.Kategori.Id=Kategori.Id   bu sekilde yazildiginda sonuç asagidaki gibi olacaktir.


Urun tablosundaki KategoriId ile Kategori tablosundaki Id degeri esit olan ürünleirin kategori adi ile getirilmesini isteminde bulundugumuzdan bu sekilde basarmis oluruz.

Join islemleri yaparken karsilasacagimiz bir hata olan ,

Ambiguous column name ' ' Hatasi ve Çözümü

Bu hata 2 veya daha fazla tablo birlestirilirken bu tablolarda ayni sütun isminde sütunlar varsa ve ben select isleminde bi sütun ismi yazdigimda bu sütun ismi iki veya daha fazla tabloda ortak olan bir sütun ismi ise bu hata çikar ve derki hangi tablodakini istiyorsun birden çok talboda bu sütun ismi var sen hangi tablodakini istiyorsun anlaminda hata göstergesi çikar.

Örnegin üst örnekte resimde belirttigimiz tablolarda örnek yapalim
SELECT UrunAd , KategoriAd , Id from Urun INNER JOIN Kategori ON Urun.Kategori.Id =Kategori.Id  yazip çalistirdigimda Ambiguous column name 'Id' hatasini verecektir.Çünkü Id hem Kategori hem de Urun tablosunda sütun ismi olarak kullaniliyor sen hangi tablodakini kullanmak istiyorsun bunu belirtmelisin diyor.Hangi tablonunkini görmek istiyorsak TabloIsmi.SütunIsmi  yazilir. Örnegin Kategori tablosundaki Id degerini getirmesini istiyorsak

SELECT UrunAd , KategoriAd , Kategori.Id from Urun INNER JOIN Kategori ON Urun.Kategori.Id =Kategori.Id  , seklinde yazilir.

Anlattigim kavramlarin uygulama videosu



Iyi Çalismalar Dilerim
 

 

Author: Engin ATALAY
Date: 23.02.2013 20:24:04
View Count: 7343
 
 

COMMENTS
 
Resim Yüklenemedi
sad
25 Mart 2019 14:52
sadsda
 
 
Resim Yüklenemedi
312
3 Nisan 2019 13:32
23
 
 
 
 
 
Resim Yüklenemedi
orhan
23 Ağustos 2015 14:47
tesekkür. Çok net açiklama olmus. hocam left right join ve triger lerden de bahseder misiniz.
 
 
 
 
 
 
 
 
 
 
 
 
WRITE COMMENT
 
 
Your Name :
 
 
 
E-mail :
 
 
 
Your Message :
 
 
 
 
 
 
 
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.
 
Yukarı Çık