SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...
SQL'de Aynı Tablo İçerisindeki Verileri Yeniden Ekleme
Bazı durumlarda tablolarımız içerisindeki verileri çoğaltamamız gerekebiliyor. Bunu normal INSERT işlemi ile de yapabiliriz. Bunun yanında WHILE döngüsü ile de yeni kayıtlar oluşturabiliriz. Fakat elimizde hazır veriler varken direk bunlar üzerinden işlem yapıp yeni kayıtlar eklemek mümkün. Örnek vermek gerekirse: Kullanıcılara ait rollerin olduğu bir tabloda siz yine bu kullanıcılara başka rol vermek istediğinizde bu yöntem ile basit bir sorgu iler aynı kullanıcıları sadece rol değerini değiştirerek ekleyebileceksiniz. Bu yazdığım sorguları Nortwind veri tabanı üzerinden yaptım. Veri tabanını indirmek için buraya tıklayabilirsiniz. Veri tabanını SQL Server üzerinden açıp script kodunu çalıştırabilirsiniz. SQL Server'da script dosyasını nasıl çalıştırılır bilmiyorsanız SQL Server Script Alma ve Çalıştırma adlı yazılımı inceleyebilirsiniz.
Mevcut Ürünler Tablosu
Biz bu tabloda kategori ID değeri 1 olanları yine aynı tablo içerisine ekleyeceğiz. Ama ekleme yaparken bazı değişlikler yapacağız.
SELECT * FROM Products
Sorguyu Yazma ve Çalıştırma
Sorguyu normal insert işlemi yapar gibi yazıyoruz. Fakat "Values" alanı yerine SELECT komutu ile yine tablo için kullanacağımız alanları belirliyoruz. Aslında aynı tablo alanlarını buraya yazıyoruz. Siz bu çoğaltacağınız verilerin bazı yerlerini değiştirmek istiyorsanız oraya tablo alanı yerine istediğiniz veriyi yazıyorsunuz. Veri tiplerine dikkate alarak yazmayı unutmayın. Ben bu örnekte CategoryID=1, QuantityPerUnit=1 Yeni Ürün ve UnitPrice=13 olarak yaptım. Yani diğer alanlar aynısı olsun fakat bu 3 alan için benim bu istediğim veriler tabloya kayıt edilsin şeklinde bir tanımlama yaptım. Son olarak koşul olarak CategoryID=1 dedim.
Sorgunun Türkçe Meali:
CategoryID değeri 1 olan kayıtları al sonra bu kayıtları eklerken CategoryID "1" olsun, QuantityPerUnit alanı "1 Yeni Ürün" olsun ve UnitPrice alanı da "13" olsun demiş olduk. Sorguyu çalıştırdığınızda bu kurala uygun olarak yeni kayıtların oluştuğunu göreceksiniz.
INSERT INTO dbo.Products(ProductName, SupplierID, CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued)
SELECT ProductName, SupplierID, 1, '1 Yeni Ürün', 13, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued
FROM dbo.Products
WHERE CategoryID=1
Sorgu Sonucu
Sorgu sonucunda görmüş olduğunuz gibi kategori değeri 1, ürün bilgisi 1 Yeni Ürün ve ürün fiyatı olarak ise 13 şekilde veriler eklenmiş oldu. Dikkat ederseniz bu 3 alan dışındaki veriler hep aynı. Çünkü bir SELECT ifadesinden sonra o alanları var olanlar ile aynı olsun diye tablo alanını yazdık. Değiştirmek istediklerimizi de kendi istediğimiz verileri yazdık. Bu şekilde siz de aynı tablo içerisinde verilerinizi çoğaltabilirsiniz. İstediğiniz koşula göre aynı tablo içerisinde yeni veriler eklemeniz oldukça kolay.
Umarım faydalı olmuştur. İyi çalışmalar.
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.