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
COMMENTS


