DİNAMİK SORGULAMA

 
Dinamik sorgulama, tek boyutlu SQL sorgulamasının yetersiz kaldığı yerlerde aşamalı sorgular veya veri listesine dayalı sütun bazlı özel veri sorgulama imkanı sunmaktadır.
 

 

Dinamik Sorgulama 3 farklı yönteme göre yapılmaktadır. İhtiyacınıza göre bu yöntemlerden birini seçebilirsiniz.
1. Serbest Veri Listesi; Sütun isimlerinin tarafınızdan belirlendiği ve diğer her sütun için ayrı özel SQL sorgusu yazıldığı sistemdir. Bu sistemde birbirleri ile ilgisiz tablolara ait verileri sorgulayarak kendinize özel bir veri seti hazırlayabilirsiniz.
2. Referans Bazlı Sorgu; Bu yöntemde bir Referans SQL sorgusu oluşturulur ve aşadaki kısımdaki sorgular bu referans sorgudan oluşan verilere göre filtre edilerek bir veri seti hazırlanır.
2. Dinamik SQL Sorgusu; Bu yöntemde, 3 kademeye kadar zincirleme çalışan ve bir kademenin bir sonraki kademeye filtre değeri gönderdiği bir sorgulama yöntemidir. Bu yöntemde nihayi veri listesi son kademe tanımlı olan sorgulama sonucu oluşan verilerdir.
 
1. Serbest Veri Listesi Hazırlama
Dinamik Sorgu Türü seçeneğinden Serbest Veri Seti işaretlenir.
Veri Sütun sayısı belirlenir. Veri sütun sayısı en az 2 olmalıdır. 1. sütun sizin tanımlayacağınız metin/metinler, diğer sutunlarda sonuç SQL sorguları yer alacaktır.
Satır Ekle butonu kullanılarak istenilen sayısıda veri kayıt satırı eklenir.
Aşağı kısımdaki listeden Sütun-1 başlığı altındaki ilgili kayıt satırı mouse ile tıklandığında orta kısımdaki veri girişi alanı değişecek ve  Sütun-1 başlığını alarak bir metin yazmanız istenecektir. Buraya girdiğiniz metin/açıklama kayıt başlığınız olacaktır.
Sütun-2 ve sonraki sütunların ilgili kayıt satırlarını tıkladığınızda orta kısımdaki veri girişi alanı SQL Sorgu girişine dönüşecektir. Bu kısımda SQL sorgusu kullanarak elde edeceğiniz veri değerini oluşturan bir SQL komutu yazınız. SQL sorgunuzun sadece tek bir değer ve kayıt dönecek şekilde tasarlanması gereklidir. Bu şekilde her bir hücreyi doldurarak bir veri seti listesi oluşturabilirisiniz.
 
Örnek;
1. Satır; Sütun-1 = Satışlar,  Sütun-2 = Satışların Tutarını elde eden SQL Sorgusu, Sütun-3 = Satışların Miktarını elde eden SQL Sorgusu
2. Satır; Sütun-1 = Alımlar,   Sütun-2 = Alımların Tutarını elde eden SQL Sorgusu,  Sütun-3 = Alımların Miktarını elde eden SQL Sorgusu
buna benzer şekilde ihtiyacanız olan verilere göre satır ve sütun sayıları ayarlarak liste oluşturabilirsiniz.
 
2. Referans Bazlı Sorgu
Dinamik Sorgu Türü seçeneğinden Referans Bazlı Sorgu işaretlenir.
Veri Sütun sayısı belirlenir. Veri sütun sayısı en az 2 olmalıdır. 1. sütun referans SQL sorgusundan oluşacak verilerin ilk alanın değeri olacaktır. Diğer sütunlar ise, referans sorgudan gelen değere göre tarafınızdan hazırlanacak SQL Sorguları tanımlanacaktır.
Alt kısımda ise, sadece 1 satırlık bir tanımlama alanı görünecektir ve Sütun-1'de (Referans SQL Sorgusu-@Alan1@) ibaresi sabitlenecektir.
Sağ üst kısımdaki Referans SQL sorgusu kısmına size birinci öncelikli bir veri listesi gönderecek SQL komutlarını tanımlayınız.
Alt kısımdaki Sütun-2 ve sonraki sütünlarada referans sorgusundan gelecek verilere göre filtreleme yapan SQL komutlarınız yazınız.
Referans SQL Sorgusu verilerinde tanımlanan alan sırasına göre filtreleme fonksiyon alanları @Alan1@, @Alan2, ... şeklindedir.
 
Örnek;
Satış Tutarı en yüksek olan 10 stoğu belirleyip bunlara ait satış miktar ve tutarlarını hesaplayan bir veri listesi oluşturmak istiyoruz.
Referans SQL Sorgusu = Select TOP 10 StokKodu, Sum(Tutar) From Satislar Order By Sum(Tutar) DESC
Bu referans sorgusundan Tutar alanına göre en yüksekten küçüğe doğru 10 adet kayıt listelenecektir.
Sütun-2'de Referans sorgudan gelen Stok Koduna (1.Alan) ait satış tutarlarının toplam değerinin alınması isteniyor.
Sütun-2 = Select Sum(Tutar) From Satislar Where StokKodu='@Alan1@'
Sütun-3'de Referans sorgudan gelen Stok Koduna (1.Alan) ait satış miktarlarının toplam değerinin alınması isteniyor.
Sütun-3 = Select Sum(Miktar) From Satislar Where StokKodu='@Alan1@'
 
Sütun sorgularında dikkat edilecek konu alan tipine göre filtreleme yapılmasıdır. Örnekteki Referans sorgusundan dönen StokKodu alanı alfanumeric tanımlı bir değerdir ve Sütun sorgusundaki filtredeki alanda alfanumeric tanımlı olduğu için @Alan1@ değeri ' (Tek Tırnak) içerisinde filtre kriterine eklenmiştir.
 
3. Kademeli Çalışan Sorgu
Dinamik Sorgu Türü seçeneğinden Kademeli Çalışan Sorgu işaretlenir.
Bu yöntem 3 kademe ve tek sorgu sütunu ile sınırlıdır. Her kademede için bir SQL sorgusu oluşturulacak ve bu sorgular bir önceki kademeden gelen verilere göre (@Alan1@, @Alan2@, ...)  filtre edilecektir. Son kademedeki sorgudan oluşan veriler sonuç değerleri olarak sistemde geri dönecektir.
 
Örnek;
En Çok Ciro yapan 10 müşteriyi belirledikten sonra bu müşterilerin aldıkları ürünleri listeyen bir sorgu oluşturmak istiyoruz.
1. Kademe = Select TOP 10 CariKodu, Sum(SatisTutar) From Satislar Group By CariKodu Order By Sum(SatisTutar) DESC
1. Kademeden En çok ciro yapan 10 müşteri verisi listelenecektir. Cari kodu ile bir sonraki kademede filtreleme yapacağız.
2. Kademe = Select StokKodu, CariKodu, Sum(SatisTutar) From Satislar Where CariKodu='@Alan1@' Group By StokKodu, CariKodu
1. Kademeden oluşan veri listesine 2. kademe sorgusu her seferinde çalışarak StokKodu, CariKodu, Satış Tutarından oluşan veri listesi sonucu dönecektir. Referans bazlı sorgudan farkı 1.Sutun değeri olarak CariKodunun mevburi olmaması ve son kademe belirlenen sonuç alanlarına göre bir veri listesi oluşmasıdır.
 
 
Dinamik sorgulama tanımlamanızı tamamladıktan sonra ONAY butonuna basarak tekrar SQL Sorgu ekranına geri dönebilirsiniz. Dinamik Sorgu tanımlaması yapıldığında SQL Sorgulama ekranının sorgu kısmında "Select Sutün-1, Sutün-2, ... From #DinamikSorgu#" ibaresi yerleşecektir. Bu ibaret bir Dinamik sorgu tanımlamasının yapıldığını belirmektedir. SQL Sorgulama ekranından bu metni sildiğinizde Dinamik sorgulama tanımlamalarınızda silinecektir.