sql etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

SQL Row_Number() Fonksiyonu Update Yapmak (Sıra Kolonu Güncelleme)



Selamlar arkadaşlar,
Bu dersimizin içeriği;
  1. Row_Number() Kullanımı
  2. Update işlemi
  3. Update İşlemi içerisinde select sorgusu kullanımı
Öncelikle bu işlem bana neden gerek oldu onu anlatayım. ID bilgisi haricinde bir adet de sıra bilgisi tutmak gereken bir tablom var. Sıra mutlaka 1, 2, 3, 4 gibi sıralı olması gerekiyor. Eğer 1, 3, gibi atlamalı olursa sıkıntı yaşıyorum. (En başta 50 olup sonraki düzeltmede 45 olması sıkıntı değil) Yani işin özü her üç satırdan bir hesap çıkarmam gerekiyor.  Bunun içinde Kod -1 , Kod -2 olarak kullanıyorum.
Tablo mevcut ama aralardan silinmeler olduğundan dolayı atlamalar var ve bu da hesapları bozuyor. Manuel düzeltmek isterdim ancak tabloda binlerce kayıt var ve saatler sürer.
Kodlarımıza geçelim.
SQL
UPDATE x

SET x.Tbl_Kod = x.Yeni_Kodlar

FROM (
      SELECT Tbl_Kod , ROW_NUMBER() OVER (ORDER BY [Tbl_ID] ) AS Yeni_Kod
      FROM MyTable
      ) x

-- x ile select sorgusuna bir isim vermiş olduk
-- x. ile başlayanlar bu select sorgusunun elemanları anlamına gelir.
-- x sorgusundaki Tbl_Kod 'u x sorgusundaki ROW_NUMBER()' a  göre güncelle - demiş oluyoruz.
-- Ancak buradaki ROW_NUMBER()' ı da veriler ID ye göre sıralandığındaki satır numarasını alıyoruz
Kodlarımızı sıralı olarak yani ardışık olarak almak için 
SQL
ROW_NUMBER()
bu fonksiyonu kullanıyoruz ve hangi sıraya göre alacağımızı da
SQL
ROW_NUMBER() OVER (ORDER BY [Tbl_ID]
devamındaki komutlar ile alıyoruz.  
NOT: ROW_NUMBER() ile gelen sıra numarası hiçbir zaman değişmez.   
Sıralamayı ID'ye göre de yapsanız, Tarihe göre de yapsanız 1. satır her zaman 1. satırdır. Yani ROW_NUMBER() tabloya bağlı değldir. Gelen sonuçlara bağlıdır. (Excel deki gibi düşünün. 1. Satırı sildiğinizde 2. satır 1. satır olur.)
Bu dersimizde bu kadar arkadaşlar
Diğer derslerimizde görüşmek üzere,
Bol kodlu günler
https://mustafabukulmez.com/

SQL Tablolarda Sıralı Olmayan Kayıtları Sıralamak


Selamlar arkadaşlar,
Bu dersin içeriği;
  1. MS-SQL'de kayıtların sıralı görünmemesi sorununu düzelteceğiz. (2 Farklı yol)
Belki daha önce karşılaşmışsınızdır. Tabloyu oluşturdunuz kayıtlar dolmaya başladı. Kontrol için tabloyu açtınız bir baktınız Identity(1,1) kolonundaki ID ler karman çorman (tüm satır yani). Şöyle bir sıra görebilirsiniz. 1, 5, 2, 3, 4, 10, 11, 12, 13, 14, 25, 86, 7...
1. Yol - Öncelikle bu sorunun sebebi ID kolonunu primary key yapmamanızdır. Böyle bir tablonuz var ise bir deneyin. Desing sayfasını açın ve Id kolonunu primary key yapın. Sorunun düzeldiğini göreceksiniz.
2. Yol - Bir sebepten dolayı tabloda primary key kullanamıyorsunuz ve bu kayıtların sırasız oluşu işinizi zorlaştırıyor. O zaman yapacağınız işlem şudur. Tablo adının solundaki ( + )'ya tıklayın ve alt klasörleri görün.
  • Columns
  • Keys
  • Constraints
  • Triggers
  • Indexes
  • Statistics
Burada işimiz Indexes klsöründe. Indexes klasörü üzerinde sağ tıklıyoruz ve New Index >> Clustered Index diyoruz. Açılan ekranda identity olan kolonumuzu seçiyoruz ve tamam diyoruz. Artık kayıtlar düzenli bir şekilde sıralanacaktır.

Bu dersimizde bu kadar arkadaşlar,
Diğer derslerimizde görüşmek üzere,
Bol kodlu günler.
https://mustafabukulmez.com/

SQL Sanal Stun Oluşturmak ve C# İşlemler Yapmak

Selamlar,
Bu dersin içeriği
  • SQL Query de select sorgusu içerisinde cast komutu ile sanal stun oluşturmak
  • DevExpress GridControl nesnesi üzerinde sanal stun ile çoklu işlem yapabilme
  • SQL de GETDATE() fonksiyonun kullanımı
  • SQL select sorgularında iki stunu birleştirip gösterme
  • For döngüsü kullanımına bir örnek
----------------------------------
Bugün sorgu içerisinde snal stun oluşturup DevExpress Grid üzerinden sanal stunla ilgili işlemlere bakacağız.
SQL
  SELECT 
  cast(0 as bit) as SEÇ  ,  -- tabloda böyle bir stun yok
  KOD AS KOD, 
  AD + ' ' +  SOYAD AS [ADI_SOYADI]  -- ad soyad birleştirildi
  FROM  [TABLO_1] 
  ORDER BY ADI_SOYADI
Bu sorgumuzda ki
SQL
cast(0 as bit) as SEÇ 
 kısmı bize sanal bir bit stun oluşturuyor ve gridview üzerinde bize her satır için bir checkbox tanımlıyor. Şimdi gridde bu sanal stun da seçilenlerin sql'e kaydedilmesini yapacağız.
Görelim:
C#
for (int i = 0; i < gridView1.RowCount; i++)
    {
       string seç = Convert.ToString(gridView1.GetRowCellValue(i, "SEÇ").ToString());
       if (seç == "True")
       {
           string griddeki_kod = gridView1.GetRowCellValue(i, "KOD").ToString();
          
           sql.CommScalar("insert into TABLO_2" //sql.comsclar kendei sql class'ımdan geliyor.         
          + "(tarih"
          + ",kod"                
          + ",aktif_pasif)"
          + " values"
          + "(GETDATE() " // SQL serverin bulundugu makinanın saatini alır
          +", griddeki_kod "
          + ", 0"
          + ")");
        }
     }
Şimdi işlemlerimize bir göz atalım:
For döngüsü ile grid üzerindeki seçili kayıtları arıyoruz. SEÇ stununda seçili olan kayıtları insert kodumuz ile sql tablomuza kayıt ediyoruz.
NOT: 
C#
//string
string seç = Convert.ToString(gridView1.GetRowCellValue(i, "SEÇ").ToString());
       if (seç == "True")

//int
int seç = Convert.ToInt16(gridView1.GetRowCellValue(i, "SEÇ").ToString());
       if (seç == 1)

//Boolean
bool seç = Convert.ToBoolean(gridView1.GetRowCellValue(i, "SEÇ").ToString());
       if (seç == True)
Yukarıdaki kodda biz seçim alanını string bir dereğe eşitledik bu sebeple "True" yada "False" bir değer geri dönüyor.
  • String'e atarsak string değer string olarak "True" yada "False" değeri döner.
  • İnt'e atarsak "1" yada "0" değeri döner
  • Bool'a atarsak boolean türünde true yada false değeri döner.
Windows nesnelerinde de durum bu şekilde mi bilmiyorum. Daha önce de dediğiö gibi çoğu windows nesnelerini hiç kullanmadım.
Bu dersimizde bu kadar arkadaşlar.
Bol Kodlu Günler.
https://mustafabukulmez.com/

SQL 2014 Server Management Stduio'da Yapılması Gereken Bazı Ayarlar


Bu dersimizde SQL 2014 Server Management Stduio'da Yapılması Gereken Ayarlara değinelim


Selamlar,
Bu dersimizde  SQL 2014 Server Management Stduio programında yapmamız gereken bir kaç ayarı göstermek istiyorum. Aslında zorunda değiliz ama bize kolaylık sağlar.
  1. Tablodaki verileri görmek istediğimizde tablo adi > sağ tık > select top ** Rows  yaparız. Başlangıçta burada 100 olur. Zamanla bu sayı size yetmez. Bunu değiştirebiliriz. Tools >  Options >  SQL Server Object Explorer alanında 100 leri görürsünüz buralara 2147483647 yazın. Bun sayının anlamı tüm kayıtlardır. Yani sql de bir tabloda olabilecek max satır sayısıdır. 
  2. Tools >  Options >  Text Editör  alanındaki All Languages, Plain Text, Transact-SQL ve XML kısmındaki Word Wrap'ı aktif edebilirsiniz. Bu kod ekrana sığmayacak kadar uzun olduğunda otomatik olarak bir alt satıra indirir.
  3.  Tools >  Options > Designers > Table and Database Designers alanındaki tüm işaretleri kaldırın. Burada en önemlisi bir tabloda değişiklik yapmanız gerektiğinde size tabloyu silip yeniden oluşturmaya zorlayan bir seçenektir. Onu da kaldırmış oluyoruz.
bu dersimizde bu kadar arkadaşlar. Bu 2014 versiyonu içindir ancak diğer versiyonlar dada benzer yerlerdedir bir arama ile bulabilirsiniz.
Bol Kodlu Günler.
https://mustafabukulmez.com/

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

MS-SQL (CAST) Sanal Kolon Oluşturmak ve Kullanmak (C#)

Bu dersimizde ms-sql de bir sanal kolon oluşturup bu kolonla C# üzerinde nasıl işlem yaparız ona bakacağız


Selamlar arkadaşlar,
Bu dersimizde ms-sql de cast komutu ile bir sanal kolon oluşturup o sanal kolon ile nasıl işlem yapacağımızı anlatmaya çalışacağım.
Cast komutu aslında bir sanal kolon oluşturmamıza olanak sağlıyor ama aynı zamanda bir kolonun tipinide değiştirebiliyoruz. int olarak ayarladığımız bir kolonu select sorgusu içersinde cast komutu ile nvarchar olarak değiştirebiliriz. Bunu da sanal kolon mantığı ile yapıyoruz.
Cast ile sanal bir nvarchar kolon oluşturup int olan kolonu o sanal kolonun içerisinde atıyoruz. (anladığım kadarı ile...)
Kendi kullanım seklimi analtacağım. Sizler işinize nasıl yarıyorsa o şekilde kullanabilirsiniz.
SQL
selecet

 CAST(0 AS bit) as SEÇ

,*
from STOKLAR
Yukarıdaki kodumuz bize değeri 0 (False) (Seçilmemiş/Boş) olan BIT türünde sanal bir kolon oluşturuyor. Program içerisinde bu select sorgunu bir grid e bastığımız da SEÇ kolonunda checkBox ile geliyor. (DevExpress Nesnesinde) Ve bizde bu seçim alanını kullanarak kullanıcıya çoklu işlem yaptırabilliyoruz.
Şimdi C# kodlarımıza bir bakalım.
C#
for (int i = 0; i < gridView1.RowCount; i++)
{
  string SEC = Convert.ToString(gridView2.GetRowCellValue(i, "SEÇ").ToString());
  if (SEC == "True")
  {
    // işlem kodlarınız.
  }
}
Bu şekilde de C# içerisinde SEÇ adlı BIT türündeki kolonda seçilmiş olan kayıtlar üzerinde işlemler yapabiliriz. (Örn, Seçili siparişleri onaylamak/iptal etmek gibi.)
Bu dersimizde bu kadar arkadaşlar.
Bol Kodlu Günler.
------------------------------------------------------------------------------------------------------------ 
NOT: Ben sürekli DevExpress kullandığımdan verdiğim kodları Windows nesnelerinde çalışmayabilir. Bu sebeple yazdığım kodlar size işin mantığını göstermek ve fikir vermek amaçlıdır. DevExpress kullanıyosanız kodları projenize göre düzenleyerek kullanabilirsiniz.
https://mustafabukulmez.com/
  • Etiketler;
  •  
  • ms-sql
  •  
  • c sharp
  •  
  • sql cast kullanımı
  •  
  • sanal kolon