Apply iki tablo arasındaki join işlemini gerçekleştiririz. Apply operatörü Cross ve Outer işlemleriyle birlikte kullanılır. Apply operatörü ON ifadesi olmadan join işlemi yapar. Outer, joindeki sol tarafa ait tüm satırları getirir. Joinin diğer tablodaki içerisinde o satırların olup olmadığını önemsemez. Cross, ise sadece tablodaki satırlarla uyuşan kayıtları getirir.
For XML Path’i Ne Zaman Kullanmalıyım
For XML Path tablo şeklindeki verileri XML türüne dönüştürmek için kullanılan yöntemdir.
Biz bu örneğimizde For XML Path ile Outer Apply kullanarak bir tablodaki verileri istediğiniz işaretlere göre ayırarak tek bir kolonda toplayacağız. Bunu biz Join işlemi ile yaparsak mükerrer kayıtlar elde edebiliriz. Ancak Apply ve For XML Path ile birleştirerek kullanırsak böyle bir durum söz konusu olmaz.
Şimdi bu kullanıma basit bir örnek verelim. Ben bu örnekte Satislar ve OdemeSekilleri tablosunu kullanarak satışların hangi ödeme şekilleriyle yapıldığını göstereceğim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | SELECT s.SatisID, s.Tarih, s.Saat, s.PaketNo, s.Cikis, s.Gelis, odeme.OdemeSekliAdi FROM Satislar AS s OUTER apply ( SELECT o.OdemeSekliAdi + '-' + CONVERT (nvarchar(50), so.Tutar) + ' ' FROM SatisOdemeleri AS so INNER JOIN OdemeSekilleri AS o ON o.OdemeSekliID = so.OdemeSekliID WHERE so.SatisID = s.SatisID ORDER BY so.SatisID DESC FOR xml path ('') ) AS odeme (OdemeSekliAdi) ORDER BY s.SatisID DESC |
SQL Sorgusunun Çıktısı
Soru ve görüşleriniz için [email protected] adresine mail atabilirsiniz.