Son Haberler
Anasayfa / Yazılım / SQL / SQL Tabloyu Kendisi İle Eşleştirme

SQL Tabloyu Kendisi İle Eşleştirme

SQL’de bazen öyle olur ki bir tablo içinde yer alan verilerin aynı tablo içinde eşleşerek listelenmesini isteyebiliriz. Genelde bu sorgu tipi de çok nadirdir ancak değinmeden geçmeyelim. Bur örneği yapabilmek için ben veritabanım üzerinde Calisanlar adında bir tablo oluşturacağım. Bu tablomda CalisanID, YoneticiID ve Unvan alanları olacak. Şimdi tablomuzu oluşturalım tablomuzu oluşturmak için ms sql’de INSERT INTO deyimini kullanırız. Konumuz şu an tablo oluşturma olmadığı için detayına girmiyor ve direkt olarak SQL sorgumu yazıyorum :

CREATE TABLE Calisanlar (CalisanID INT, YoneticiID INT, Unvan NVARCHAR(30));
INSERT INTO Calisanlar VALUES (1, NULL, 'Yönetim Kurulu Başkanı')
INSERT INTO Calisanlar VALUES (2,1, 'Mühendislik Müdürü')
INSERT INTO Calisanlar VALUES (3,2, 'Malzeme Mühendisi')
INSERT INTO Calisanlar VALUES (4,2, 'Tasarım Mühendisi')
INSERT INTO Calisanlar VALUES (5,2, 'AR-GE Mühendisi')
INSERT INTO Calisanlar VALUES (6,1, 'Pazarlama Müdürü')
INSERT INTO Calisanlar VALUES (7,6, 'Pazarlama Uzmanı');

Evet tablomuzu oluşturduk. Tablomda Bir bakalım cidden oluşturmuş muyuz?

SELECT * FROM Calisanlar

2013022503

Şimdi sorgumuzu yazalım ve sonucu görüp değerlendirme yapalım.

SELECT a.CalisanID AS 'ÇalışanID',a.Unvan AS 'Çalışan Ünvanı', 
b.CalisanID AS 'YöneticiID', b.Unvan AS 'Bağlı Olduğu Yönetici'
FROM Calisanlar AS a LEFT OUTER JOIN Calisanlar AS b ON a.YoneticiID = b.CalisanID

Tablo üzerinde yer alan çalışanların hangi yöneticiye bağlı olduğunu tablonun kendisi ile birleşimi sonucu elde ettik.

2013022504

Evet sonuçta görüldüğü üzere her çalışan ilgili yöneticisi ile eşleşti. Bir tek Yönetim Kurulun Başkanında eşleşme yok çünkü bağlı olduğu yönetici yok.

Bir cevap yazın

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