Ana içeriğe atla

Ms Sql Server Sub Query - Alt Sorgular Nedir-Nasıl kullanılır

Ms Sql yazılarımı takip edenler için bu blogta anlatımlarımı biraz daha öteye taşıyorum.Genelde bir çok internet sitesinde görebildiğiniz basit Ms Sql sorgularından sıyrılarak, Ms Sql Server ile iş zekasını anlatacağımız için örneklerimizi biraz daha karmaşıklaştıracağız. Ms Sql ile ilgili konuların ilgi çekici ve çokça okunduğunu, blog sayfamın istatisliklerinden ve bu konuda en çok arananların neler olduğunuda gayet iyi biliyorum.



Tanımı
Bu bloga kadar yazdığım Ms Sql yazıları başlangıç olması nedeniyle Ms Sql veritabanımızdaki verilerimizi bir deyim yada bir sabitle karşılaştırmaları içeriyordu. Fakat Transact SQL dili ayrıca  sütun değerlerinin başka bir SELECT ifadesi sonucuyla karşılaştırımasınada olanak sağlar.Daha açık anlatmak gerekirse bu blogtaki konumuz bir önceki konulardaki SELECT ifadeleri ile WHERE kalıbının içine yeni bir SELECT ifadesi ekleyecek olmamızdır.


Nedir
Ms Sql Transact- SQL dilinde bu tür bir ifade kalıbı kullanımına Alt Sorgular diyoruz. Bir alt sorgudaki ilk SELECT ifadesine "dış sorgu" ikinci SELECT ifadesinede "iç sorgu" denilir.İç sorgular her zaman ilk önce değerlendirilmelidir çünkü dış sorgular iç sorguların değerlerini kullanmaktadırlar.

Örneklere başlarken.
Geçmiş bloglardaki örnek veritabanımızı burada yeniden kullanacağız, o bloglarda konu edilen ifade ve kalıp yapılarına mutlaka göz atmalısınız.Eğer konuya yeni başlıyorsanız Ms Sql ve Trasnsact SQL notlarımın tümü birbirinin devamı niteliğinde olduğunu şimdiden söylemeliyim.

Bir önceki  Ms Sql Server Table İlişkilerini (Database Relation)  yazımda kullandığım. Ms Sql veritabanımda bulunan Personal ve Departman isimli iki table için örnek "alt sorgulara" şimdi başlayabiliriz.

Departman Table içeriğinde 3 Departman mevcut



Personal Table içeriğinde 6 Personel bilgisi ilgili DepartmanId (ForeignKey) kayıtlı

Bu 2 table için düzenlenebilecek bir çok sorgu olabilir.Alt sorguları anlamak için dikkatlice incelediğinizde Ms Sql Transact-SQL Alt sorguları (subquery) hakkında önemli bilgiler edineceksiniz.


1-) Basit Alt Sorgu
SELECT *
FROM Departman
WHERE DepartmanId
(SELECT DepartmanId FROM Personal WHERE PersonalAd = 'Serkan Senyuz')

Sonuç :          1     Bilgi İşlem Departmanı


• Bu örnekte hedeflenen Departman Tablosundaki DepartmanId ile sorguladığımız Personal Tablosunda bulunan Serkan Şenyüz'ün hangi Departmanda çalıştığını bulmaktı.

Alt sorguların en basit kullanımı yukarıdaki örnekteki gibidir. Bu örneğimizi biraz daha geliştirmek için biraz daha konuyu açalım.Basit bir alt sorguda bulunan "iç sorgu" yanlızca bir kez değerlendirilmektedir.Elbette değerlemeyi dış sorgudan aldığı bir değerle karşılaştırmakta münkündür. "İlişkili Alt Sorgular" olarak adlandırdığımız bu sorguları ilerleyen Ms Sql yazılarımda bulabilrsiniz. Basit Alt sorgulara dönersek 

Basit sorgular aşağıdaki operatörlerle kullanılabilmektedir.
• Karşılaştırma Operatörleri
• IN Operatörü
• ANY ve ALL Operatörleri
• EXISTIS Fonksiyonu


2-) IN ve Karşılaştırma Operatörü
SELECT *
FROM Departman
WHERE DepartmanId  IN
(SELECT DepartmanId FROM Personal WHERE PersonalMaas >1500)

• Bu örnekte hedeflenen "Maaşı 1500den fazla olan personelin hangi departmanda çalıştığını bulmaktır"

Sonuç :    1       Bilgi İşlem Departmanı
               3       İnsan Kaynakları Departmanı 



3- ) ANY Operatörü

SELECT PersonalAd,PersonalGorev
FROM Personal
WHERE DepartmanId = ANY
(SELECT DepartmanId FROM Departman WHERE Departman = 'Bilgi İşlem Departmanı' )

• Bu örnekte hedeflenen "Bilgi işlem departmanında" çalışanların adlarını ve görevlerini bulmaktır"






Örneklerimize kaldığımız yerden bu konunun devamı olan, diğer blogta devam edeceğim.Genel mantıkla Ms Sql Transact SQL dilinde basit alt sorgular bu şekilde çalıştırılabilirler. Ms Sql veritabanı kullanırken verilerinize erişmek için hayal gücünüzü kullanmanız gerektiği, anlar gelecektir.Bu bloga tekrar uğramayı unutmayın.


      Bu Yazının Sponsorları













Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

Firebird SQL Table oluşturma ve SQL komutları

2 nci  Firebird SQL veritabanı blogunda bu kez mevcut Firebird veritabanına ISQL ile bağlanmayı veritabanı nesnelerini oluşturmayı (create table), Kayıt eklemeyi (ınsert) ve kayıtları izlemeyi (show) ile önemli SQL komutlarını anlatmaya çalışacağım...

Firebird Veritabanı Nedir ? Nasıl Kullanılır

Firebird ücretsiz veritabanı kullanmaya ne dersiniz.Üstelik hiç bir süre ve veri sınırı olmadan kulağa hoş geliyor değilmi.Bu Blogta Borland açık kaynak interbase 6 sürümünden sonra ortaya çıkmış ve gelişimini sürekli sürdürmüş Firebird veritabanına bir göz atıcaz. İnternet üzerinde Firebird ile kaynağa çok sık rastlamazsınız artık bu blogtan Firebird ile ilgili bilgileri takip edebilirsiniz...

Asp.Net Access veritabanina resim ve nesne kaydetmek OLE Nesnesi

Ms Access ile ilgili geçmiş yazılarım arasında biraz vakit geçirmişseniz, Ms Access form uygulamaları yada veritabanı olarak kullanmayı sevdiğimi anlamışsınızdır. Birazdan size anlatmaya çalışacağım konu Ms Access veritabanı olarak kullandığımız bir Asp.Net Web projesinde resimleri ve dosyaları paket halinde veritabanının içine gömmek olacak.Neden bilmiyorum bu konuda Türkçe kaynak yok, merak etmeyin bu yazı size iyi gelecek...