MS-SQL Insert Into Select Kullanımı

MS-SQL Insert Into Select Kullanımı

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.

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.

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.

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...

Mustafa BÜKÜLMEZ
Web sitesi, ERP, MRP, CRM ve kişiye özel uygulamalar hazırlanır. -- Deneyip çalıştığını onaylamadan çok nadir ders eklerim. Denemediklerim ise eski makalelerimdendir. Hem bildiklerimi paylaşmak hemde her seferinde aramamak için yayınlıyorum. -- *Bilgi paylaştıkça çoğalır. *Bir mum diğer mumu yakmakla ışığından bir şey kaybetmez. Aksine Daha çok ışık yayar. -- 1992 İstanbul doğumluyum. Kahramanmaraş'ta yaşıyorum. Lise: Ağ sistemleri ve Yönetimi, Üniversite: Bilgisayar Programcılığı.. -- 07.2014 tarihinden beri bir firmada Bilgi İşlem Müdürü olarak çalışmaktayım. -- Kişisel Bloğum : https://csharpiledundenbugune.blogspot.com.tr/
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git