Anasayfa / Yazılım / SQL / INNER JOIN Kullanarak İki Tabloyu Birleştirmek

INNER JOIN Kullanarak İki Tabloyu Birleştirmek

Çoğu zaman Microsoft SQL’de iki farklı tablodan aynı anda verileri çekme ihtiyacı duyarız. İşte bu gibi durumlarda bu iki tabloyu veritabanı yönetim sistemi programımız üzerinde sanal bir tablo oluşturarak birleştirip bu şekilde verileri listeletmemiz gerekir. İşte bu tabloları birleştirme işlemini gerçekleştiren fonksiyon INNER JOIN fonksiyonudur. İki tabloyu INNER JOIN ile birleştirdiğimizde yazmış olduğumuz sorguda tabloya ait hangi kolonları birleştirdi isek buna göre verilerin sonuçları geriye döndürülür. Örneğin bir e-ticaret sitesinin veritabanını düşünelim. Müşteriler ve siparişler adında iki ayrı tablo olsun. Ben hangi müşterinin hangi siparişi yaptığını listeletmek istiyorum. İşte bu noktada Müşteri bilgisini müşteriler, sipariş bilgisini ise siparişler tablosundan almaya ihtiyaç duyarım. Yani istediğim sonuç iki ayrı tabloda. Bu durumda INNER JOIN ile bu iki tabloyu birleştirir ve bu iki tabloda istediğim verilerin listelenmesini sağlayabilirim. Geriye dönecek olanlar sadece benim bu iki tabloda birleştirilmesini istediğim kolonlara dair veriler olacaktır. Tabi listeleme yapabilmek için INNER JOIN ile birlikte SELECT deyimini de kullanmam gerekiyor. Kullanımı yani syntax aşağıdaki gibidir :

SELECT kolon1, kolon2, … FROM tabloAdı INNER] JOIN tabloAdı> ON tablo1.kolon1 = tablo2.kolon2

Aşağıdaki resimde Sales.SalesOrderHeader ve Sales.SalesOrderDetail tablolarının ilgili kolonları üzerinde işlem yapacağımı belirtiyorum. Sales.SalesOrderHeader tablosunda SalesOrderID kolonumuz primary key. Sales.SalesOrderDetail tablomuzda ise birleşik primary key durumu söz konusu. Bunlardan birisi SalesOrderDetailID ve diğeri SalesOrderID kolonu. Bunlara ek olarak Sales.SalesOrderDetail tablosunda SalesOrderID kolonum aynı zamanda bir foreign key.

Biraz işler karıştı gibi 🙂 Neyse şimdiden itibaren dikkatlice okuyun. Amacım şu :

Sales.SalesOrderDetail tablosundaki Foreign Key olan SalesOrderID kolonu ile Sales.SalesOrderHeader tablosundaki Primary Key olan SalesOrderID kolonlarını birleştirmek, yani iki ayrı tablodaki birbirile ile ilişkili olacak kolonum olan SalesOrderID kolonu üzerinde birleştirme yapıyorum.

Şimdi bu durumu hemen sorgumuza dökelim :

SELECT Satis.SalesOrderID, Satis.OrderDate, Satis.TotalDue,
SatisDetay.SalesOrderDetailID, SatisDetay.ProductID, SatisDetay.OrderQty
FROM Sales.SalesOrderHeader AS Satis
INNER JOIN Sales.SalesOrderDetail AS SatisDetay
ON Satis.SalesOrderID = SatisDetay.SalesOrderID

Sorgumuzun sonucu olarak :

2013021203

Sorgumuzu açıklayalım. SELECT ile listelenmesini istediğim kolonları belirledim. FROM ile hangi tablodan listeleneceğini belirttim. Daha sonra INNER JOIN ile diğer tabloyu belirttim ve ON ile bu tabloların hangi kolonları birleşecek bunu belirttim.

Sales.OrderHeader tablosundaki her satır eşsiz bir SalesOrderID değerine sahip. Bununla birlikte Sales.SalesOrderDetail tablosundaki her satırda eşsiz bir SalesOrderID değerine sahip. İşte biz bu iki tabloyu birleştirdiğimizde ortak olan bu SalesOrderID kolonu baz alınarak bu iki tablo üzerindeki istediğimiz kolonları listeliyoruz. İşin özeti bu.

Bu arada sorgum sonucunda görüleceği üzere Sales.SalesOrderHeader tablosundan gelen verilerde oldukça benzerlik mevcut. Bunun sebebi ilgili SalesOrderID değerine karşılık gelen verilerin çok olması. Zaten amacımızda iki ayrı tabloda yer alan SalesOrderID değerlerinin birleştirilerek görülmesi idi.

Bir sonraki yazımda görüşmek üzere..

Bir cevap yazın

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