ALT SORGU etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ALT SORGU etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Haziran 2012 Pazartesi

38. SUBQUERIES - JOIN Dönüşümü

  • Genel olarak ilişkili alt sorguları birer JOIN ifadesi yerine de kullanabiliriz. 
  • Aralarında sadece kullanım olarak farklılık bulunmaktadır. 
  • Sonuç olarak ise iki sorgudan da aynı sonucu elde ederiz.
Örnek: İlk sorgumuzda çalışanların hitap şekillerini 2 sorguda birbirine eşit olmayanların karşılaştırmasını yaptık. Yani IN ile bir liste alıp bunu kendi içinde eşit olmayanlarla karşılaştırdık.

Sorgu:
SELECT  DISTINCT E1.TitleOfCourtesy FROM Employees AS E1
WHERE E1.City IN
(SELECT E2.City FROM Employees AS E2 WHERE E1.TitleOfCourtesy<>E2.TitleOfCourtesy)



Örnek: Bu sorgumuzda üstteki örneğin JOIN işlemiyle yapılmış halidir.

Sorgu:
SELECT DISTINCT E1.TitleOfCourtesy FROM Employees AS E1
INNER JOIN Employees AS E2 WITH (NOLOCK) ON E1.City=E2.City
WHERE E1.TitleOfCourtesy<>E2.TitleOfCourtesy



Ders39'a Geçebilirsiniz.

29 Mayıs 2012 Salı

37. SUBQUERIES-İlişkili Alt Sorgular

  • Aslında iç sorgular ve dış sorgular belirli bir alan yani sütun üzerinden ilişkili ve birbirlerine bağlıdır. 
  • Bunu genelde WHERE koşulu üzerinden sağlarız.
Örnek: Aşağıdaki örneğimizde her bir ürün için verilmiş en yüksek sipariş miktarını listelemekteyiz.

Sorgu: 
SELECT DISTINCT ProductId,Quantity
FROM [order details] AS ord1
WHERE Quantity=( SELECT MAX(Quantity)FROM [order details] AS ord2
                  WHERE ord1.productid=ord2.productid )
ORDER BY ProductId

Ders 38'e geçebilirsiniz.

26 Mayıs 2012 Cumartesi

36. SUBQUERIES-Sonuç Listesinin Deyim Olarak Kullanılması

  • Sorgularımızda başka bir sorguyu deyim yani yeni bir parametre olarak kullanabiliriz. 
  • Bu amaç için kullanacağımız sorgu ya tek satır sonuç döndürmeli yada tek bir sütun değer listesi döndürmeli.
  • Bir değerler listesi geri döndüren sorgular IN anahtar kelimesi içeren WHERE yantümcesi yerine kullanılabilir. 
Örnek: Sorgumuzda ortalamayı bulup satılan ürünlerimiz ayrıntılı birim fiyatlarını ve bu birim fiyatlarının genel ürün potansiyelinde ortalama ürün fiyatına oranla durumunu göstermekte. Burda alt sorguları kullanarak daha anlaşılabilir sorgu yazabiliriz.

Sorgu: 
SELECT ProductName,UnitPrice,UnitsinStock,
(SELECT AVG(UnitPrice) FROM Products) AS Average,
UnitPrice-(SELECT AVG(UnitPrice) FROM Products) AS Difference
FROM Products 



Ders 37' geçebilirsiniz.

25 Mayıs 2012 Cuma

35. SUBQUERIES-Sonuç Listesinin Tablo Olarak Kullanılması

  • Sorgularımızda FROM dan sonra tanımladığımız tablo bağlanıtısı yerine tablo değilse sorgu yazabiliriz. 
  • Sonucunda da ilerde bahsedeceğim TEMP TABLE kullanmış oluruz. 
  • Dönen sonuç listesi temp tablo gibi kullanılıp AS ile ad verilip sütunlarını istediğimiz gibi kullanabiliriz.
Örnek: Sorgumuzda Çalışan tablomuzdan bize lazım olanları alıyoruz. Daha anlaşılabilir hale getirip temp tablomuzu kullanarak yeni bir sorguya bağlıyoruz.

Sorgu: 
SELECT Calisan.Kimlik, Calisan.Isim, Calisan.Soyad FROM
(SELECT EmployeeID AS Kimlik,LastName AS Soyad,FirstName AS Isim FROM Employees)
 AS Calisan


Ders 36'ya geçebilirsiniz.

34. SUBQUERIES (ALT SORGULAR)

  • Kısaca Alt Sorgu bir sorgu içine gömülmüş SELECT sorgularıdır. 
  • Çoğu durumlarda  Alt Sorguyu JOIN ifadelerine dönüştürebiliriz. 
  • Genelde Büyük sorgulardaki karmaşıklığı azaltmak, anlaşılabilirliği arttırmak için kullanılırlar. 
  • Mantık olarak burda yaptığımız bir sorgu sonucu gelen sonuç listesine dayalı yeni sorgular çalıştırmak için kullanırız. 
  • Bilmeniz gereken Alt Sorgularda JOIN işlemi daha hızlı işlemektedir. 
  • Ayrıca daha karmaşık SP'ler yazmaya başladığınızda bunu daha iyi anlayacaksınız. 
  • Scriptlerin anlaşılabilirliği, yazılımcıdan bağımısızlığı ne kadar iyi sağlanırsa yazdığınız sorgular o kadar uzun ömürlü ve kullanılabilir olur. 
  • Kural olarak ise Alt Sorguları parantez içinde yazmalıyız.

İlgili Konular;

35. SUBQUERIES-Sonuç Listesinin Tablo Olarak Kullanılması 
36. SUBQUERIES-Sonuç Listesinin Deyim Olarak Kullanılması 
37. SUBQUERIES-İlişkili Alt Sorgular 
38. ALT SORGULAR - JOIN Dönüşümü
39. SUBQUERIES-HAVING Dönüşümü 
40.SUBQUERİES- EXISTS ve NOT EXISTS Kullanımı