18/10/2021, 04:07
Tally Table, Çetele Tablosu olarak Türkçeleştirebileceğimiz sayısal bir tablodur. Kaynak tablodaki her bir öğenin miktarını göstermek için çetele işaretleri kullanarak verileri düzenleme tekniği Tally Table olarak adlandırılır.
Örnek verecek olursak
Şeklinde bir ürün kayıtlarının olduğu tbl_Urun adlı bir tablomuz olduğunu kabul edelim. Bu tablodan hareket ile her bir ürünün adedi miktarınca tekrar kayıt oluşturmak sureti ile yeni bir tablo oluşturmak istediğimizi kabul edelim. Oluşturulacak yeni tablo
Şeklinde olacaktır.
Bunu bir sorgu yardımı ile yapabilmek için Tally Table adını verdiğimiz bir yardımcı tablodan destek alırız.Bunun için:
id adlı tek bir alandan oluşan tbl_Tally adlı bir tablo oluşturup id alanı veri türünü Sayı ve alan boyutunu da Uzun Tamsayı olarak tanımlarız.
Daha sonra tbl_Tally tablosuna 0’dan başlayarak 9 dahil tüm sayıları yazarak kaydederiz:
Bu tablo üzerinden oluşturacağımız
sorgusu 1’den 100’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
sorgusu 1’den 1000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
sorgusu 1’den 10.000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
sorgusu 1’den 100.000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç döndürür.
Bu sayı tablosunu bir çapraz birleştirmenin parçası olarak, belirli sayıda kaydı döndürecek bir sorgu oluşturmak amacıyla kullanabiliriz. Örneğimizden hareket ederek tbl_Urun tablosundan elde edeceğimiz sonuç tablosu için oluşturacağımız sorgu (ekli örnek dosyasında qry_Tally adlı sorgu)
şeklinde olacaktır. Bu sorgu neticesinde elde edeceğimiz sonuç tablosu yukarıda manuel olarak kaydettiğimiz sonuç tablosu ile birebir aynı olacaktır. Anlatımların tamamı ekli dosyada basit olarak uygulanmış hali ile mevcut olup inceleyebilirsiniz.
Bu yöntem kullanılarak çözüm geliştirilmiş konu örneği : Etiket Yazdirma
Örnek verecek olursak
Şeklinde bir ürün kayıtlarının olduğu tbl_Urun adlı bir tablomuz olduğunu kabul edelim. Bu tablodan hareket ile her bir ürünün adedi miktarınca tekrar kayıt oluşturmak sureti ile yeni bir tablo oluşturmak istediğimizi kabul edelim. Oluşturulacak yeni tablo
Şeklinde olacaktır.
Bunu bir sorgu yardımı ile yapabilmek için Tally Table adını verdiğimiz bir yardımcı tablodan destek alırız.Bunun için:
id adlı tek bir alandan oluşan tbl_Tally adlı bir tablo oluşturup id alanı veri türünü Sayı ve alan boyutunu da Uzun Tamsayı olarak tanımlarız.
Daha sonra tbl_Tally tablosuna 0’dan başlayarak 9 dahil tüm sayıları yazarak kaydederiz:
Bu tablo üzerinden oluşturacağımız
select 10*n10.id+n1.id+1 as n from tbl_Tally n1, tbl_Tally n10
sorgusu 1’den 100’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
select 100*n100.id+10*n10.id+n1.id+1 as n from tbl_Tally n1, tbl_Tally n10, tbl_Tally n100
sorgusu 1’den 1000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
select 1000*n1000.id+100*n100.id+10*n10.id+n1.id+1 as n from tbl_Tally n1, tbl_Tally n10, tbl_Tally n100, tbl_Tally n1000
sorgusu 1’den 10.000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç;
select 10000*n10000.id+1000*n1000.id+100*n100.id+10*n10.id+n1.id+1 as n from tbl_Tally n1, tbl_Tally n10, tbl_Tally n100, tbl_Tally n1000, tbl_Tally n10000
sorgusu 1’den 100.000’e kadar sayıların sırası ile yayılımını yaparak listelendiği bir sonuç döndürür.
Bu sayı tablosunu bir çapraz birleştirmenin parçası olarak, belirli sayıda kaydı döndürecek bir sorgu oluşturmak amacıyla kullanabiliriz. Örneğimizden hareket ederek tbl_Urun tablosundan elde edeceğimiz sonuç tablosu için oluşturacağımız sorgu (ekli örnek dosyasında qry_Tally adlı sorgu)
select tbl_Urun.* from tbl_Urun, (select 100*n100.id+10*n10.id+n1.id+1 as n from tbl_Tally n1, tbl_Tally n10, tbl_Tally n100) t where t.n <= tbl_Urun.[Adet] ORDER BY tbl_Urun.id
şeklinde olacaktır. Bu sorgu neticesinde elde edeceğimiz sonuç tablosu yukarıda manuel olarak kaydettiğimiz sonuç tablosu ile birebir aynı olacaktır. Anlatımların tamamı ekli dosyada basit olarak uygulanmış hali ile mevcut olup inceleyebilirsiniz.
Bu yöntem kullanılarak çözüm geliştirilmiş konu örneği : Etiket Yazdirma