top of page
Ara

Cross Apply Ve Outer Apply

  • Seda Özdemir
  • 28 Haz 2015
  • 2 dakikada okunur

1. CROSS APPLY

Sorgulardan dönen resultsetleri kolonları ile beraber bir tablo içine transfer etmeye yarar. İşlem yapıldıktan sonra tabloda özel olarak görmek istediğimiz kolonlar eklenmiş olur. Anlık görüntü oluşturur daha sonra tabloya bakıldığında cross apply uygulanmadan önceki şekliyle görünür.

Kullanim yapısı:

select * from TabloA

cross apply

(sorgu) as tabloB

örn1:

Northwind' de bulunan Employees tablosuna aşağıdaki sorgudan dönen sonucu ekleyeceğim. Öncelikle sorguyu inceleyin. Sorgu Çalışanların bu zamana kadar ki sattığı ürünlerin hangi ürün olduğuyla beraber adedini döndürüyor;

(result setin devamı var fakat kodun okunabilirliği için almadım)

crossApply1.png

Cross Apply Kodu :

crossApply2.png

Not:Kodu çalıştırdığımızda tablo aşağıdaki gibi geliyor.

crossApply3.png

Aşağıda görüldüğü gibi Employees tablosunu sonra tekrar çalıştırdığımda eklenen kolonlar görünmez çünkü cross apply sadece result set i etkiler. Tabloda değişiklik yapmaz.

crossApply4.png

Sorgu yerine fonksiyon gibi ifadelerde kullanılabilir önemli olan tablo şekllinde resultset döndürmesidir.

Fonksiyon Ile Kullanimi :

Örnek olarak aşağıdaki gibi bir function yazdım. İçine gönderilen parametreyi where kısmında employeeID ile eşitleyerek çalışanın ad ve soyad bilgilerini ekrana getiriyor.

alter function KimlerNereli

(@employeeid int)

returns @tablom table(

isim nvarchar(10),

soyisim nvarchar(20)

)

begin

insert @tablom select FirstName,LastName from Employees where EmployeeID=@employeeid

return

end

Sorgu Kodu :

Tanımladığım fonksiyonu joinlediğim EmloyeeTerritories ve Territories tablolarının resultseti ile birleştiriyorum içerisine giden parametre olarak ise EmloyeeTerritories' den gelen EmloyeeID yi gönderiyorum ve fonksiyondan geriye Employee' nin(calısanın) ismi ve soyadı dönüyor.

select B.isim, B.soyisim,C.TerritoryDescription from EmployeeTerritories as A join Territories as C on

c.TerritoryID=A.TerritoryID

cross apply

dbo.KimlerNereli(A.EmployeeID) as B

crossApply5.png

2. OUTER APPLY

Left join mantığı ile düşünülebilir. Cross applyda ortak kolondaki tüm ortak satırlar gelirken. Outer Apply ile sol tablo nun resultset' i baz alınarak outer apply dan sonraki sorgunun resultseti gelir. Soldaki tablonun ortak sütunundaki ortak olan verilerin bulunduğu satırla dolu olarak gelir. Ortak olmayanlar yerine ise 'Null' gelir.

 
 
 

Son Yazılar

Hepsini Gör

Comments


© 2023 by The Book Lover. Proudly created with Wix.com

  • Facebook B&W
  • Twitter B&W
  • Google+ B&W
bottom of page