Ocak 20, 2012 at 00:49 · Kategori: SQL
Sql Server’da herhangi bir veritabanındaki bir tabloyu verileriyle ya da verileri olmadan başka bir veritabanında da oluşturmak istediğimde genellikle Sql Server’ın Generate Scripts özelliğinden yararlanıyordum. Ancak bu işlemi direkt olarak bir sql ifadesi yazarak yapmak da mümkün.
Select * Into YeniTestDB.dbo.YeniFilmler
From Filmler
Where 1 = 2
Bu ifade ile Filmler isimli tablo YeniTestDB isimli veritabanında da oluşturulmuş oldu. Ancak yazmış olduğunuz where ifadesi sayesinde mevcut tablodaki verilerin aktarılmasını engellendi.
Eğer buradaki where ifadesi kaldırılırsa bu kez verileriyle birlikte Filmler isimli tablo, YeniTestDB isimli veritabanında oluşturulmuş olacaktı.
Temmuz 28, 2011 at 23:06 · Kategori: SQL
Geçen gün projelerin birinde bu tip bir sorguya ihtiyacım olmuştu. Sql’de çok tecrübeli olmadığımdan olaya temkinli yaklaşıp aşağıdaki sorguyu yazmıştım:
SELECT SUM(val) FROM (
SELECT COUNT(*) AS val FROM Tablo1
UNION
SELECT COUNT(*) AS val FROM Tablo2
)
Sorguyu çalıştırıp yanlış değer döndüğünü farkedince olayın UNION kullanmamdan kaynakladığını öğrendim. Temkinli olmak yetmemiş, bilgiye ihtiyacım varmış. Zira UNION farklı değerlerle ilgilenip , tablolardaki aynı değerleri yeni oluşan tabloya dahil etmiyor. Kısaca Sqldeki DISTINCT gibi çalışıyor diyebiliriz. Sorguyu aşağıdaki şekliyle çalıştırınca istediğim sonucu yani iki tablodaki row sayılarının toplamına ulaşmış oldum. Elbette projedeki select sorguları böyle değildi, ancak olayı anlaşılır kılmak adına böylesi daha uygun olur diye düşündüm.
SELECT SUM(val) FROM (
SELECT COUNT(*) AS val FROM Tablo1
UNION ALL
SELECT COUNT(*) AS val FROM Tablo2
)
Şüphesiz bu sonucu sqlde birden fazla yöntemle elde edebiliriz. Sizin de bir çözümünüz varsa paylaşabilirsiniz.