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