Verification: 6ab19e626810e10c MSSQL SubQuery (Alt Sorgu) - Hikmet İSKİFOĞLU

MSSQL SubQuery (Alt Sorgu)

MSSQL SubQuery (Alt Sorgu)

Birden fazla Mssql sorgusunun iç içe yazılmasına SubQuery (Alt Sorgu) denilmektedir. İlk başta biraz karmaşık gözükse de aslında oldukça basit ve mantıklı bir yapısı vardır. Hemen bir örnek ile başlayalım.

Personeller tablosundan personel_no su “1” olan personelin ünvanını döndüren sql kodunu yazalım.

Personel ve Ünvan tablosu ilişkisi

Tablo ilişkisine bakıp kuracağımız bağlantıyı belirleyelim . Öncelikle yapacağımız iş personel_no =1 olan personeli bulup onun unvan_no sunu tutmak, sonrasında ise unvan tablosundan unvan_no‘su az önce personel tablosundan bulduğumuz unvan_no‘ya eşit olan unvanın unvan_ad‘ını çekmek olacaktır.

Düşünme şeklimizi bu şekilde yapıp sql kodunu yazarken ki sıralamamızı ise bizden istenen veriyi en başa yani en dış paranteze yazarak başlamalıyız.

select unvan_ad from unvan where unvan_no =
(select unvan_no from personel where personel_no=1)

Gördüğünüz gibi bir adet unvan adı dönüş yapılmış oldu.

Kullanmış olduğumuz sorguda “where unvan_no=” yazımının bir anlamı vardır. Buradaki “=” bir değer döndürüleceği anlamına gelmektedir.

Eğerki dönen değer sadece bir personelin unvan_no’su değilde birden fazla personelin unvan_no su olsaydı burada “=” yerine in kullanmak zorunda kalacağız. Hemen “in” ile ilgilide bir örnek yapalım.

Yine aynı tablolardan giderek aradaki farkı göstermek istiyorum.

Şimdiki örneğimizde Maaşı 4500 den fazla olan personellerin unvanlarını çekeceğiz. Hemen sorgumuzu yazalım. Öncelikle bizden istenen kısmı yazıyorum ardından eşitleyeceğimiz unvan_no’sunu çekelim.

select unvan_ad from unvan where unvan_no in
(select unvan_no from personel where maas>4500)
Maaşı 4500 den fazla olan personellerin ünvanını getir

Şimdi in ve = operatörlerinin fakrını anladığımıza göre daha zor bir örnekle devam edelim.

Ünvanı Mühendis olan personellerin görevlendirildiği projelerin adlarını ekrana döndüren sql kodunu yazalım. Öncelikle diagramdan izleyeceğimiz yolu çizelim.

select proje_ad from proje where proje_no in
(select proje_no from gorevlendirme where personel_no in
(select personel_no from personel where unvan_no in 
(select unvan_no from unvan where  unvan_ad='MÜHENDIS')))

Özet

Öncelikle bizden döndürülmesi istenilen bilginin sorgusunu en başa yazıyoruz. Sonra where koşulu ile o tablonun bağlantı kolonunu yazıp oraya gelen bilgi tekilse “=” ile çoğulsa in ile diğer sorgumuzu parantezler aracılığı ile bağlıyoruz.

Önerilen Yazı :  MSSQL Select İşlemleri

Dikkat!

  • in ve = kullanımlarına dikkat edilmeli
  • Parantezlere dikkat edilmeli
  • Döndürülen kolonlara dikkat edilmeli

Bu yazımızda SubQuery (Alt Sorgular) ‘ı anlattık. Diğer veritabanı derslerimizi aşşağıdaki bağlantılardan ulaşabilirsiniz.

Total Page Visits: 474 - Today Page Visits: 1

Bir cevap yazın

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