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

12 Ağustos 2012 Pazar

SQL Server'da Stored Procedure

  • SQL ifadeleri SQL Serverda Stored Procedure olarak saklanmaktadır. 
  • Basit örneklemek gerekirse " SELECT * FROM Birds " ifadesini saklayabiliriz. Ama büyük yapılarda kullanılan Stored Procedureler daha komplekstir. 
  • Stored Procedure'ler birden fazla tablonun farklı JOIN işlemleri ile bağlanmasıyla ve parametreli veya parametresiz değerlerin WHERE koşullarıyla kısıtlanmasıyla istenilen sonuça hızlı ve sade bir şekilde ulaşmamızı sağlar.

ÖRNEK:
CREATE PROCEDURE Person_Selection
@yas INT

AS

IF(Yas> 19)
SELECT * FROM Person WHERE Yas > @yas ORDER BY Yas
ELSE
SELECT * FROM Person WHERE Yas> @yas and Eriskin=1 ORDER BY Yas

GO

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.

25 Mayıs 2012 Cuma

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ı

20 Mayıs 2012 Pazar

31. İkiden Fazla Tablonun Birleştirilmesi

  • Büyük sorguların yazıldığı durumlarda ikiden fazla tablonun belirli kısıtlamalarla birleştirilmesi gerekebilir. 
  • JOIN işlemiyle birleştirilen tablolar bir başka tabloya aradaki ortak sütunlar üzerinden bağlanabilir.
Örnek: Aşağıdaki örnekte Sipariş Detayları(Order Details) tablosunu ara tablo şeklinde kullanarak, Siparişler (Orders) ve Ürünler(Products) tablosundan gerekli bilgileri görüntülenmiştir. Bir sipariş birden fazla ürünü içerebilir ve bir ürün birden fazla siparişte yer alabilir. Sonuç kümemizde Sipariş Detayları (Order Details) tablosundan hiçbir alan görüntülemesekte sorguda kullanmalıyız.

Sorgu:
SELECT OrderDate,ProductName FROM Orders AS O
INNER JOIN [Order Details] AS OD ON O.Orderid=OD.Orderid
INNER JOIN Products AS P ON OD.Productid=P.Productid
WHERE OrderDate BETWEEN '7/8/96' AND '7/9/96'
ORDER BY OrderDate

Ders 32'ye geçebilirsiniz.

17 Mayıs 2012 Perşembe

29. OUTER JOIN-RIGHT JOIN Kullanımı

  • Birleştirdiğimiz ikinci tablodaki bütün kayıtları sonuç listesinde görmek istediğimiz zaman RIGHT JOIN... ON... işlemini kullanırız. 
  • Böyle bir durumda ise ilk tabloda eşleşmeyen kayıtlar NULL(boş) olarak döner. 
  • Ayrıca birleştirdiğimiz tabloların yazım sırasını değiştirirsek LEFT JOIN ... ON .... işlemiyle aynı sonucu elde etmiş oluruz.

Söz dizimi:
SELECT <sütun ad(lar)ı>
FROM <ilk_tablo>
RIGHT JOIN <ikinci_tablo>
ON <birinci_tablo>.<anahtar alan> = <ikinci_tablo>.<anahtar_alan>

Örnek: Aşağıdaki örnekte tüm müşteriler ve verdikleri siparişler listelenmiştir.Böylece hem müşteri üzerinden her bir müşterinin verdiği siparişleri ve ayrıntılı müşteri bilgilerine ulaşıyoruz.Ayrıca temel bilgi olarak sirapiş tablosuna müşteri tablosunu bağladığımızı siparişlere göre eşleşen müşteri bilgilerinin geldiğini görüyoruz.
Sorgu:
SELECT * FROM Orders AS O
RIGHT OUTER JOIN Customers AS C ON C.CustomerId=O.CustomerID


Ders 30 ' a geçebilirsiniz.



13 Mayıs 2012 Pazar

27. INNER JOIN Kullanımı

  • SQL de varsayılan (default) olarak kullanılan tablolaları bağlama işlemidir. 
  • Bağlanan tablolarda sadece ilişkili kayıtlar listelenir.
Örnek: Sorgumuzda hangi firmadan hangi ürünü aldığımızı bulmak istiyoruz. Bunun için iki farklı tabloyu birleştirip istediklerimiz SELECT ediyoruz. SELECT * FROM... yaparak da listenen tüm verileri görebilir, istediklerimizi alabiliriz. Diğer bir konuda AS kullanma sebebim daha büyük sorgularla uğraştığımızda bilmeniz gereken bir spde (Stored Procedure) bir tabloya 2 veya daha fazla sorgu cekmeniz gerekebilir. Bunun için ayrı ayrı nesne gibi düşünüp (p,s) gibi üzerinde işlemler yapmak size daha anlaşılabilirlik ve kolaylık sağlayacaktır.

Sorgu:
SELECT ProductName,CompanyName
FROM
Products AS p
INNER JOIN
Suppliers  AS s ON s.Supplierid=p.Supplierid

Ders 28'e geçebilirsiniz.





12 Mayıs 2012 Cumartesi

26. SQL JOIN İşlemleri

  • Bundan önceki derslerimizde hep tek tablo üzerinde çalıştık. 
  • Bazı durumlarda daha anlamlı ve geniş sonuç kümeleri elde edebilmek için birden fazla tablonun verilerine ihtiyacımız olabilir. 
  • Bunun için sorgularımızda iki farklı anahtar kelime daha kullanırız. 
  • Bu anahtar kelimeler JOIN ve ON ifadeleridir. 
  • JOIN ifadesi ile hangi tabloları ve nasıl birleştireceğimizi belirtiriz. 
  • ON ifadesi ile de birleştireceğimiz tabloları hangi alanlar üzerinden bağlayacağımıza karar veririz.
  •  Genelde tablolar Birincil anahtar (Primary Key) ve Yabancı anahtar (Foreign key) üzerinden birleştirilsede diğer alanlar üzerindende birleştirilebilir. Sadece bu alanların aynı türden veri içerdiğinden emin olmanız yeterlidir. 
  • Birincil anahtar (Primary Key) her kayıt için benzersiz (unique) bir değer taşıyan alandır. Örneğin Kişi bilgilerinin tutulduğu bir tabloda TC Kimlik No herkesin farklı olduğu için Primary key olarak kullanılabilir. TC Kimlik No herkesin farklı olduğu için bütün bilgiler bu no üzerinden farklı tablolarda bilgiler tutulabilir.
Ders 27'ye geçebilirsiniz.