Bilişimcilerin Otağı

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.

alıntı

 

ZAFER ALTUN

11/H  8146

Site ad:

http://yesilkalem.net/forum/showthread.php?t=3373

http://yesilkalem.net/forum/archive/index.php/t-3374.html

http://yesilkalem.net/forum/showthread.php?t=3375

http://sistemdestekuzmani.blogspot.com/2010/07/ms-sql-server-sub-query-alt-sorgular.html

Yazar: zaferaltun

zafer altun sitemizde 12 yazı eklemiş...