MS-SQL Insert Into Select Kullanımı

Temmuz 04, 2017 Mustafa BÜKÜLMEZ 0 Yorum


Bu dersimizde insert sorgusu içerisinde select sorgusunu nasıl kullanacağımızı göreceğiz.


Selamlar arkadaşlar,
Bu dersimizde insert sorugu içerisinde select sorgusunu nasıl kullanacağımızı görelim. bu işlem ile  bir tablodaki bütün değerleri veya filtrelediğimiz verileri başka bir tabloya nasıl tek seferde aktaracağımızı göreceğiz.
Bu işlem işlerini çok kolaylaştıran br işlemdir arkadaşlar. bunun varlığını bilmeden önce verileri aktarmak için bile küçük programcıklar yazmak zorunda kalıyordum. Ama artık buna gerek kalmadı.
Hemen kodlarımızı görelim.
SQL
INSERT INTO table2

SELECT * FROM table1 WHERE condition;
Yukarıdaki örnekte birbirini aynısı olan iki tablodan birinden diğerine filtrelenen verileri aktarmayı görüyoruz. 
Peki bu ne işe yarar derseniz; Bir revizyon tablosu olarak kullanabilirsiniz. Örneğin sipariş tablonuz var ve yapılan her değişikliği kaybetmeniz gerekmektedir. Bu gibi durumlar SIPARISLER tablonuzun aynısı olan SIPARISLER_REV olarak bir tablo daha açarsınız ve eski kayıtları REV tablosuna aktarırsınız.
SQL
INSERT INTO table2 (column1, column2, column3, ...)

SELECT column1, column2, column3, ... FROM table1 WHERE condition;
Yukarıdaki bu kodumuz da da bir tablodaki istediğimiz kolonları başka bir tablonun istediğimiz kolonuna katarabilirsiniz.
Peki bunu nasıl bir yerde kullanabiliriz? 
Örneğin kapsamlı bir rapor oluşturmanız gerekiyor. Firma ve yıl bazlıı Alış tutarları ve miktarları, Satış tutarları ve miktarları, toplam adetleri, kalan stoklar, stokların max min miktarlarıi kaç fatura kesilmiş vs bir çok tablodan verileri toplayıp tek raporda göstermeniz gerekiyor. Bu gibi işlemlerde karmakarışık sorgular yerine bunu kullanabiliriz. 
Temsili olarak şu şekilde görünecektir.
SQL
CREATE TABLE YILLIK_RAPOR ( 
 CariAdi  [nvarchar](190) NULL, 
 SatisTutari [float] NULL,
 AlisTutarı [float] NULL, 
 FaturaAdedi [int] NULL,
) 

INSERT INTO YILLIK_RAPOR (CariAdi)
SELECT CariAdlari FROM CARILER WHERE Aktif=1 order by CariKodu asc

INSERT INTO YILLIK_RAPOR (SatisTutari)
SELECT SUM (Tutar) FROM SATISLAR group by CariKodu order by CariKodu asc;

INSERT INTO YILLIK_RAPOR (AlisTutarı)
SELECT SUM (Tutar) FROM ALISLAR group by CariKodu order by CariKodu asc;

INSERT INTO YILLIK_RAPOR (FaturaAdedi)
SELECT COUNT (Tutar) FROM FATURALAR group by CariKodu order by CariKodu asc;

select CariAdi, SatisTutari, AlisTutarı, FaturaAdedi from YILLIK_RAPOR
Tablo oluşturulur, değerler toplanır, veriler çekilir. Liste alındıktan sonra tabloyu drop edebilirsiniz.
Tabiki bu şekilde %100' de çalışır ihtimalini veremem. Böyle birşey denemediğim için tahmini olarak bu kodları yazdım.Ama mantıken çalışması ve doğru sonuçlar vermesi gerektiğini düşünüyorum.
Amacım olayın mantığını anlatmaya çalışmaktı arkadaşlar. Anladıysanız ne mutlu bana anlamadığınız bir yer varsa yorum olarak sorabilirsiniz.
Bu dersimizde bu kadar arkadaşlar.
Bol Kodlu günler...
https://mustafabukulmez.com/

0 Yorum: