Anasayfa / Yazılım / SQL / Birden Fazla Tablodan Veri Sorgulamak

Birden Fazla Tablodan Veri Sorgulamak

SQL’de SELECT ile sorgulama işlemleri tek bir tablodan yapılabildiği gibi birden fazla tablo içinde aynı anda tek sorgu yapılaiblir. Bunun için subquery dediğimiz alt sorgu yöntemi ya da INNER JOIN deyimi kullanrak yaptığımız tablo bağlama yöntemleri kullanılabilir. Bunun için bir örnek yapalım. Örnek bir Sirket Adında database oluşturuyorum ve bu database üzerinde Calisanlar ve Bolumler tablolarını oluşturuyorum. Bunu burda anlatmıyorum önceki yazılarımızda SQL’de nasıl veritabanı oluşturulur nasıl tablo oluşturulur değinmiştik zaten. Sirket adlı Veritabanımda çalışanlar tablomda veriler var, bölümlerde de veriler var. Örneğin şöyle bir sorgu çekiyorum.

Hem Çalışanlar hem de Bölümler tablomdan veri çekmek üzere, bölümü yazılım olan çalışanlar tablomdaki kişilerin ad ve soyadını görmek istiyorum. Tablolarım şu şekilde :

Şimdi Subquery’imizi yazalım :

SELECT Ad,Soyad FROM Calisanlar WHERE BolumID IN 
( SELECT BolumID FROM Bolumler WHERE Bolum LIKE '%Yazılım%')

İşte bu sorgu ile yapmış olduğum işlem Bölüm adında Yazılım ifadesi geçen Bolumler tablosundaki Bolum ID’yi bulup, bu BolumID’nin eşit olduğu Calisanlar tablosundaki veriler içinde Ad ve Soyadları çekmek..


Tablo Bağlama :
SQL’de birbiri ile ilişkilendirilmiş tablolardan SELECT ile sorgulama yapmak istediğimizde bu tabloları birbirine bağlamamız gerekir. Bunun için INNER JOIN ifadesi kullanılır. Benim oluşturmuş olduğum Sirket veritabanında Calisanlar tablosu ile Bolumler tablosunda BolumID’ler arasında bir ilişki var. Şimdi INNER JOIN kullanarak yazılım bölümünde çalışan kişilerin ad ve soyadlarını çekelim.

SELECT Calisanlar.Ad, Calisanlar.Soyad 
FROM Bolumler
INNER JOIN Calisanlar ON Bolumler.BolumID = Calisanlar.BolumID
WHERE Bolumler.Bolum LIKE '%Yazılım'

Görüldüğü gibi Subquery metodunda aldığım sonucu INNER JOIN ile de alabiliyorum. Büyük harfler ile yazdığım kısımları bir kalıp olarak düşünebilirsiniz. SELECT ile neleri çekeceğim, FROM nerden INNER JOIN ile neyi bağlayacağım ve sonra da WHERE ile filtreleme kısmım yer alıyor..

Bir de şöyle bir senaryo düşünelim. Üstteki tabloları görebiliyoruz. Çalışanlar tablosunda kişi adları, soyadları be bölüm ID’leri yer alıyor. Bir kişi Şirket içinde tüm çalışanların adlarını, soyadlarını ve çalıştıkları bölümleri listeletmek istiyor olsun. Görüldüğü gibi Çalışanlar tablosunda Bölüm adları yok, sadece ID’leri var. Ve Çalışanlar ile Bölümler tablosu arasında ilişki var. O halde INNER JOIN ile herhangi bir filtreleme yapmadan bir kişi şirket içinde çalışanların ad ve soyadlarını bölümleri ile birlikte tek tabloda çekebilir. Bunu yapan sorgu işlemi :

SELECT Calisanlar.Ad, Calisanlar.Soyad, Bolumler.Bolum 
FROM Bolumler
INNER JOIN Calisanlar ON Bolumler.BolumID = Calisanlar.BolumID

Ve bu deyimin sonucunda iki tablo bağlanarak sonuç ekranında tek tablo şu şekilde gösterilir :

6 yorum

  1. SELECT Calisanlar.Ad, Calisanlar.Soyad
    FROM Bolumler
    INNER JOIN Calisanlar ON Bolumler.BolumID = Calisanlar.BolumID
    WHERE Bolumler.Bolum LIKE ‘%Yazılım’

    burda select den sonra bölümler.bolum.ıd olması gerekmiyor mu_?

  2. Teşekkür ediyorum
    Çok açıklayıcı olmuş ve çok faydalandım.
    Başarılar diliyorum

  3. S.A. ilk olarak şunu öğrenmek istiyorum en alttaki resimde dgw in kendi kolanundaki sayıları nasıl yazdırdınız. ikinci sualim 5 sütunum var her sütunun üzerinde bir textbox var, her textbox tek başına arama yapabilmeli ve ikinçi için örnek vereyim 1. sutunda a’yı aradım 2. sudunda arama yaptıgım zaman listelenen satırlar arasında ikinci aramayı yapsın. Farkındayım biraz karışık ama aramalarım rağmen böyle bir açıklama veya video bulamadım, yardımcı olabilirmisiniz.

  4. merhaba uyeler veri tabanı altında altı tablom var.bunları üçü ile veri listeleme yapmak istiyorum.üç tablomun isimleri

    (uyeler,resimler,arkadaslar). session ile gelen rumuz bilgisine bağlı olarak arkadaslar tablosundan sorgulama

    yaparak çıkan arkadas isimlerinin (rumuzlarının) resimler tablosundaki anaresim sütunundaki ismi ve uyeler

    tablosunda ki üye bilgilerini alarak listelemek istiyorum.nasıl sorgu yazabilirim.(asp,access,sql kullanıyorum.)

  5. Selamın aleyküm hocam,

    ben sitemde imei sorgulaması yapmaya çalışıyorum bu taplolar gibi çalışması lazım ama işin içinden çıkamadım bi yardım edebilirmisin bana

  6. Merhabalar iki tane ayrı tablonun tüm alanlarını nasıl listeleyebilirim?

Bir cevap yazın

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