<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>asp.net, jquery ve diğer web teknolojileri üzerine &#187; Sql</title>
	<atom:link href="http://www.apostylee.com/category/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.apostylee.com</link>
	<description>asp.net, jquery ve diğer web teknolojileri üzerine, biraz da kişisel.</description>
	<lastBuildDate>Mon, 10 Oct 2011 11:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Basit bir alış veriş sepetinin mantığı.</title>
		<link>http://www.apostylee.com/basit-bir-alis-veris-sepeti-yapimi/</link>
		<comments>http://www.apostylee.com/basit-bir-alis-veris-sepeti-yapimi/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 12:58:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[alış veriş]]></category>
		<category><![CDATA[eticaret]]></category>
		<category><![CDATA[sepet]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://basit-bir-alis-veris-sepeti-yapimi.html</guid>
		<description><![CDATA[Elimden geldiğince e-ticaret sitelerinin en önemli unsurlarından biri olan alış-veriş sepeti mantığını anlatmaya çalışacağım. Bu konuya değinmemin sebebi sürekli sorulan ve korkulan bir konu olması. Esasında oldukça basit olan bu yapıya adım atmadan önce bize neler lazım bunlara bir bakalım. 2 Adet tablo işimizi görecektir. Bunlardan biri stoklarımızın olacağı stoklar ve sepetimizde saklayacağımız bilgilerin bulunacağı sepet tablosu. Tablolarımız görüldüğü üzere [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Elimden geldiğince e-ticaret sitelerinin en önemli unsurlarından biri olan alış-veriş sepeti mantığını anlatmaya çalışacağım. Bu konuya değinmemin sebebi sürekli sorulan ve korkulan bir konu olması. Esasında oldukça basit olan bu yapıya adım atmadan önce bize neler lazım bunlara bir bakalım. 2 Adet tablo işimizi görecektir. Bunlardan biri stoklarımızın olacağı <strong>stoklar</strong> ve sepetimizde saklayacağımız bilgilerin bulunacağı <strong>sepet</strong> tablosu.</p>
<pre class="brush: sql; title: ; notranslate">
--stoklar
CREATE TABLE [stoklar] (
  [id] int IDENTITY(1, 1) NOT NULL,
  [stokadi] nvarchar(300),
  [fiyat] decimal(10, 2) NULL,
  [parabirimi] nvarchar(5),
  PRIMARY KEY CLUSTERED ([id])
)
ON [PRIMARY]
GO

--sepet
CREATE TABLE [sepet] (
  [id] int IDENTITY(1, 1) NOT NULL,
  [stok_id] int NULL,
  [kullanici_id] int NULL,
  [adet] int NULL,
  [eklenmezamani] datetime NULL,
  PRIMARY KEY CLUSTERED ([id])
)
ON [PRIMARY]
GO
</pre>
<p>Tablolarımız görüldüğü üzere oldukça basit, sepete ürün eklemek için yapacağımız işlem şu, <strong>stoklar</strong> tablosundaki <strong>id</strong> değerini alıp  <strong>sepet</strong> tablosundaki <strong>stok_id</strong> alanına yazmak. Sepet tablomuzda bulunan kullanici_id alanı ise sepetin hangi kullanıcıya ait olduğunu anlamamız için sepete ürün ekleyen kullanıcının id bilgisi. Genelde üye giriş yaptığı zaman bu değeri bir sessiona atıyoruz. Sepet tablosuna yeni kayıt eklerken bu bilgiyide ilgili alana yazıyoruz. Örnek bir sql cümlesi yazalım.</p>
<pre class="brush: sql; title: ; notranslate">
-- kullanıcımızın id değeri 1
-- stoklar tablomuzdaki stoğun id değeri 5
-- adetimiz ise 1 olsun

insert into sepet (stok_id,kullanici_id,adet,eklenmezamani) values ('5','1','1',getDate())
</pre>
<p>Eğer kullanıcı sepetine daha önceden eklemiş olduğu ürünü tekrar eklemek isterse adet bilgisini arttırmak içinse şöyle bir cümle işimizi görecektir.</p>
<pre class="brush: sql; title: ; notranslate">
if not exists(select id from sepet where stok_id=5 and kullanici_id=1)
	insert into sepet (stok_id,kullanici_id,adet,eklenmezamani) values ('5','1','1',getDate())
		else
	Update sepet set adet=adet+1 where stok_id=5 and kullanici_id=1
</pre>
<p>Kullanıcıya sepetindeki ürünleri göstermek içinse</p>
<pre class="brush: sql; title: ; notranslate">
	Select stoklar.stokadi,stoklar.fiyat,stoklar.parabirimi,sepet.adet from sepet,stoklar where sepet.stok_id = stoklar.id order by sepet.id desc
</pre>
<p>Kullanıcıya sepetteki ürünleri gösterirken neden stoklar tablosuna bağlanıp fiyat, para birimi ve stok adı gibi verilerini alıyoruz ? Sepete ekleme yaparken bu bilgileri de girseydik daha rahat olmazmıydı ? gibi soruları duyar gibiyim. Bunun sebebi şu, kullanıcının sepetine ürünleri eklediğini varsayalım, aradan bir zaman geçti ve ürünün fiyatı değişti aynı şekilde para birimi veya ürünün adı da değişti. Buyurun ayıklayın pirincin taşını :) Ürün kullanıcı sepetine eklendiğinde 30 liraydı 1 hafta sonra 40 lira oldu, 10 lira zarardasınız. Gösterdiğim şekilde siz stoktan herhangi bir ürünün bilgisini değiştiğinizde tüm kullanıcılar güncel stok bilgilerini görebilirler. Yani bu iki tablo bir birleriyle ilişki içerisindedir. Çok karışık olmadığını düşündüğüm bir konu, sadece kayıt ekliyoruz okadar. Bir sonraki yazıda örneklerle bu işlerimin nasıl çalıştığını, ürünlerin fiyat toplamlarını vb.. sepet işlemlerini anlatmaya çalışacağım. Umarım faydalı olur.</p>
<div class="shr-publisher-179"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/basit-bir-alis-veris-sepeti-yapimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devamını oku olayı..</title>
		<link>http://www.apostylee.com/devamini-oku-olayi/</link>
		<comments>http://www.apostylee.com/devamini-oku-olayi/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:48:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[devamını oku]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://devamini-oku-olayi.html</guid>
		<description><![CDATA[İster klasik asp isterse asp.net olsun yeni başlayan arkadaşların bir numaralı sorularının başında devamını oku olayı geliyor. Genelde X karakterden büyükse sona iki nokta şeklinde kullanılıyor. Her zaman olduğu gibi birden fazla yapım şekli bulunuyor, fakat ben bu örnekte işi sql e yıkıyorum. Sebebi ise daha performanslı bir yöntem olduğunu düşünmemden ileri geliyor. Örneğin 500 [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>İster klasik asp isterse asp.net olsun yeni başlayan arkadaşların bir  numaralı sorularının başında devamını oku olayı geliyor. Genelde X karakterden  büyükse sona iki nokta şeklinde kullanılıyor. Her zaman olduğu gibi birden fazla  yapım şekli bulunuyor, fakat ben bu örnekte işi sql e yıkıyorum. Sebebi ise daha  performanslı bir yöntem olduğunu düşünmemden ileri geliyor. Örneğin 500  karakterli bir verimiz olsa bunun sql den gelmesi ve işlenmesi 2 adımdan oluşur  ve 500 karakterin yüklenmesi zaman kaybı doğurur. Halbuki direk sql cümlemizle  olayı çözersek hem tek adımda hemde karakterlerin istediğimiz kadarını  alacağımız için sürede kısalacaktır. Bu benim düşüncem belkide aksi gibidir :)  Neyse daha fazla uzatmadan sql kodumuza bakalım..</p>
<p>Gördüğünüz gibi geçenlerde <a href="t-sql-ile-newid,-soundex,-case-ve-substring-kullanimi.html" target="_blank"> bahsettiğim</a> case ve substring ifadesiyle olayımızı hallediyoruz. Eğer  alanAdi içindeki karakter 20 den büyükse ilk 20 karakteri gösteriyor sonuna iki  nokta ekliyoruz. 20&#8242; den küçükse direk alanAdi içindeki kaydı alıyoruz. İster  klasik asp de ister asp.net de kullanabilirsiniz esasında mssql in olduğu  heryerde kullanabilirsiniz ;)</p>
<pre name="code" class="sql">SELECT<br />
	case<br />
    	when Len(alanAdi)>20 Then SUBSTRING(alanAdi,0,20)+'..'<br />
    else<br />
    	alanAdi<br />
	end as 'kisaAlanAdi', digerAlanAdi<br />
FROM<br />
  TabloAdi<br />
[/html]</p>
<div class="shr-publisher-169"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/devamini-oku-olayi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>T-SQL ile newID, Soundex, Case ve Substring kullanımı</title>
		<link>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi-2/</link>
		<comments>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi-2/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 10:35:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[fonksiyon]]></category>
		<category><![CDATA[ipucu]]></category>
		<category><![CDATA[newid]]></category>
		<category><![CDATA[soundex]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[substring]]></category>
		<category><![CDATA[t-sql]]></category>

		<guid isPermaLink="false">http://t-sql-ile-newid,-soundex,-case-ve-substring-kullanimi.html</guid>
		<description><![CDATA[Bazı işlemler vardır kod yazmaya kalkınca dünya kadar satır yazmanız gerekir, halbuki zaman zaman Sql in nimetlerinden yararlanmak olayları bir çırpıda performanslı bir şekilde çözmek anlamına geliyor. Bu nimetleri birer örnekle açıklamaya çalışayım. NewID() herzaman heryerdeki fiks sorulardan biridir, veritabanından rastgele nasıl veri çekerim veya veri kümesinin içinden rastgele x kadar kaydı nasıl çekerim gibi.. satır satır kod yazmak yerine newId fonksiyonunu kullanabilirsiniz. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bazı işlemler vardır kod yazmaya kalkınca dünya kadar satır yazmanız gerekir, halbuki zaman zaman Sql in nimetlerinden yararlanmak olayları bir çırpıda performanslı bir şekilde çözmek anlamına geliyor. Bu nimetleri birer örnekle açıklamaya çalışayım. <strong>NewID() </strong>herzaman heryerdeki fiks sorulardan biridir, veritabanından rastgele nasıl veri çekerim veya veri kümesinin içinden rastgele x kadar kaydı nasıl çekerim gibi.. satır satır kod yazmak yerine newId fonksiyonunu kullanabilirsiniz.</p>
<p><em><strong>Örnek;</strong></em></p>
<pre class="brush: sql; title: ; notranslate">	Select * From TabloAdi order By NewID() -- tablodaki tüm kayıtları rastgele getirir.
	Select Top 5 * From TabloAdi order By NewID() -- tablodaki tüm kayıtlar içerisinden 5 tanesini rastgele listeler.
</pre>
<p><strong>Soundex() </strong>Esasında çok kabarık bir konu, en özet haliyle yanlış yazımların önüne geçmek için oluşturulmuş bir algoritma. <a style="font-weight: bold;" href="http://tr.wikipedia.org/wiki/Soundex" target="_blank">Buradan</a> detaylarına bakabilirsiniz. Google&#8217; nin <em><strong>&#8220;<span style="color: #cc0000;">Bunu mu demek istediniz?</span>&#8221; </strong></em>mekanızması bunun en iyi örneklerinden biridir. Google&#8217; nin ki kadar gelişmiş olmasada, hiç yoktan sitenizde kullanabileceğiniz bu sistemi Soundex ile birlikte yapabilirsiniz. Mesela Abdullah kelimesini aratırken yanlışlıkla  <em><strong>Abdullak</strong></em> yada <strong><em>Abdullaah </em></strong>yazdığımızda klasik arama yöntemi olan <strong>Like</strong> ile kayıt boş dönecektir, halbuki <strong>soundex </strong>kullandığımızda Abdullah kelimesini bulmamız mümkün.</p>
<pre class="brush: sql; title: ; notranslate">SELECT * FROM TabloAdi WHERE SOUNDEX('kelime') = SOUNDEX(AlanAdi)
</pre>
<p><strong>Case </strong>Sql cümlemizin içinde if kullanımının neredeyse birebir aynını bu şekilde kullanabiliriz. Amacımız elimeze geçen kaydın tam istediğimiz şekilde olması, sql cümlemizden gelen veriyi direk grid veya benzeri bir nesnede listelememizde çok daha verimli olacaktır.</p>
<pre class="brush: sql; title: ; notranslate">-- sadece if else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- if elseif else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	    When AdSoyad='Deneme' Then 'Sende Tamam ol :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- eğer koşul gerçekleşirse sonucu diğer tablodan almaya ilişkin bir örnek. Yani eğer adısoyadı abdullah ise görevinin ne olduğunu döndürüyoruz.
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then (Select gorev from gorevler where id=kullanicilar.gorevid)
	else 'Görevsiz.'
	end as 'Sonuc'
FROM
	kullanicilar

-- örnekler biraz bencil olabilir ama aklıma başka bişiy gelmedi :)
</pre>
<p><strong>SubString </strong>Kaydın başlangıç ve bitişini belirleyebildiğimiz klasik substring fonksiyonun aynısı. Kaydın istediğimiz kısmını görüntülememize olanak sağlan fonksiyonumuz.</p>
<pre class="brush: sql; title: ; notranslate">select Substring(AlanAdi,1,10) from TabloAdi -- 1=başlangıç, 2=bitiş karakteri.
</pre>
<div class="shr-publisher-165"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MSSQL 2005 de Tarih Formatını Değiştirme</title>
		<link>http://www.apostylee.com/mssql-2005-de-tarih-formatini-degistirme/</link>
		<comments>http://www.apostylee.com/mssql-2005-de-tarih-formatini-degistirme/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 10:32:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[datetime]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tarih]]></category>

		<guid isPermaLink="false">http://mssql-2005-de-tarih-formatini-degistirme.html</guid>
		<description><![CDATA[Evet yine sql yine tarih formatı :) Bilindiği &#252;zere veritabanın kendi tarih formatı bulunuyor ve bu format varsayılan olarak us_english olarak geliyor. Bilmeyen arkadaşlar i&#231;in bu tarih formatı Ay-G&#252;n-Yıl (mdy) şeklinde, bizim kullandığımız d&#252;zen ise, G&#252;n-Ay-Yıl (dmy). Bu &#231;oğu zaman verileri listelerken, s&#252;zerken veya veritabanına kayıt eklerken sizi t&#252;rl&#252; t&#252;rl&#252; cambazlıklara iten, s&#252;rekli karşınıza farklı [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Evet yine sql yine tarih formatı :) Bilindiği &uuml;zere veritabanın  kendi tarih formatı bulunuyor ve bu format varsayılan olarak <strong>us_english </strong> olarak geliyor. Bilmeyen arkadaşlar i&ccedil;in bu tarih formatı <strong>Ay-G&uuml;n-Yıl (mdy)</strong> şeklinde, bizim kullandığımız d&uuml;zen ise, <strong>G&uuml;n-Ay-Yıl (dmy)</strong>. Bu &ccedil;oğu zaman  verileri listelerken, s&uuml;zerken veya veritabanına kayıt eklerken sizi t&uuml;rl&uuml; t&uuml;rl&uuml;  cambazlıklara iten, s&uuml;rekli karşınıza farklı sıkıntılarla gelen bir handikap  durumudur. Ge&ccedil;enlerde <strong> <a href="mssql-tarih-saat-problemi-ve-cozumu.html" target="_blank"> burada</a></strong> bir kısmından bahsetmiştim. Bu olayın sanıyorum ki en kesin  &ccedil;&ouml;z&uuml;m&uuml; <strong>sql serverin ayarlarını</strong> isteğimiz doğrultusunda d&uuml;zenlemek.</p>
<p><!--devam--> </p>
<p>Olayın mantığını anlamak a&ccedil;ısından olayı biraz uzatmak istiyorum. Sql  edit&ouml;r&uuml;m&uuml;z&uuml; a&ccedil;ıp<strong> &#8220;select * from sys.syslanguages&#8221; </strong>yazıp &ccedil;alıştırdığımızda  karşımıza diller ve ayarları geliyor. Kayıtları g&ouml;rd&uuml;ğ&uuml;n&uuml;zde olayı zaten  anlıyorsunuz. <em><strong>(Şekil-1)</strong></em><br /> <a title="Resmi b&uuml;y&uuml;tmek i&ccedil;in tıklayın !" href="http://www.apostylee.com/resimler/Resimler/mssql2005tarih/syslanguages.png"> <img src="http://www.apostylee.com/resimler/Resimler/mssql2005tarih/syslanguages.png" border="0" alt="" width="640" height="*" /></a><br /> <em>Şekil-1 (kayıtların bir b&ouml;l&uuml;m&uuml;)</em></p>
<p>Sonrasında <strong>&#8220;select name, language  from master.dbo.syslogins&#8221;</strong> dediğimizde karşımıza kullanıcıların  kullandıkları varsayılan dilleri g&ouml;rebiliyoruz. Bu şu demek kullanıcıların  dillerini kişiselleştirmemiz m&uuml;mk&uuml;n olabiliyor. <strong>(Şekil-2)</strong><br /> <img src="http://www.apostylee.com/resimler/Resimler/mssql2005tarih/syslogins.png" alt="" /><br /> <em>Şekil &#8211; 2</em></p>
<p>Varsayılan dili &ouml;ğrenmek i&ccedil;in ise <strong>&#8220;select @@Language, @@Langid&#8221;</strong> c&uuml;mlesinizi &ccedil;alıştırıyoruz. <em><strong>(Şekil 3)</strong></em><br /> <img src="http://www.apostylee.com/resimler/Resimler/mssql2005tarih/Langid.png" alt="" /><br /> <em>Şekil &#8211; 3</em></p>
<p>Varsayılan dili T&uuml;rk&ccedil;e yapmak i&ccedil;in <strong>&#8220;EXEC sp_configure &#8216;default language&#8217;,  22 RECONFIGURE&#8221; </strong>c&uuml;mlesini &ccedil;alıştırıyoruz. Buradaki <strong>22</strong> <strong>T&uuml;k&ccedil;e</strong>&#8216;  nin <strong>langid</strong> si, yani <strong>&#8220;select name, language from master.dbo.syslogins&#8221;</strong> sorgusunu &ccedil;alıştırdığımızda karşımıza gelen kayıtlardaki <strong>T&uuml;rk&ccedil;e</strong>&#8216; nin  kaşısındaki <strong>langid </strong>değeri. Bu &ccedil;&ouml;z&uuml;m olması gereken şekli, istersek hi&ccedil;  bir şeye bulaşmadan <strong>&#8220;select * from sys.syslanguages&#8221; </strong>sorgusunu &ccedil;alıştırıp  elle formatları, g&uuml;n ve ay isimlerini elle değiştrimemiz de m&uuml;mk&uuml;n. Bir yazının  daha sonuna geldik, herkese g&uuml;zel ve mutlu g&uuml;nler dilerim.</p>
<div class="shr-publisher-163"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/mssql-2005-de-tarih-formatini-degistirme/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>T-SQL ile newID, Soundex, Case ve Substring kullanımı</title>
		<link>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi/</link>
		<comments>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:04:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[newid]]></category>
		<category><![CDATA[soundex]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[substring]]></category>

		<guid isPermaLink="false">http://t-sql-ile-newid-soundex-case-ve-substring-kullanimi.html</guid>
		<description><![CDATA[Bazı işlemler vardır kod yazmaya kalkınca dünya kadar satır yazmanız gerekir, halbuki zaman zaman Sql in nimetlerinden yararlanmak olayları bir çırpıda performanslı bir şekilde çözmek anlamına geliyor. Bu nimetleri birer örnekle açıklamaya çalışayım. NewID() herzaman heryerdeki fiks sorulardan biridir, veritabanından rastgele nasıl veri çekerim veya veri kümesinin içinden rastgele x kadar kaydı nasıl çekerim gibi.. satır satır kod yazmak yerine newId [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Bazı işlemler vardır kod yazmaya kalkınca dünya kadar satır yazmanız gerekir, halbuki zaman zaman Sql in nimetlerinden yararlanmak olayları bir çırpıda performanslı bir şekilde çözmek anlamına geliyor. Bu nimetleri birer örnekle açıklamaya çalışayım.</p>
<p><strong>NewID() </strong>herzaman heryerdeki fiks sorulardan biridir, veritabanından rastgele nasıl veri çekerim veya veri kümesinin içinden rastgele x kadar kaydı nasıl çekerim gibi.. satır satır kod yazmak yerine newId fonksiyonunu kullanabilirsiniz.</p>
<p><em><strong>Örnek;</strong></em></p>
<pre class="brush: xml; title: ; notranslate">
        Select * From TabloAdi order By NewID() -- tablodaki tüm kayıtları rastgele getirir.
	Select Top 5 * From TabloAdi order By NewID() -- tablodaki tüm kayıtlar içerisinden 5 tanesini rastgele listeler.
</pre>
<p><strong>Soundex() </strong>Esasında çok kabarık bir konu, en özet haliyle yanlış yazımların önüne geçmek için oluşturulmuş bir algoritma. <strong><a href="http://tr.wikipedia.org/wiki/Soundex" target="_blank">Buradan</a> </strong>detaylarına bakabilirsiniz. Google&#8217; nin <em><strong>&#8220;<span style="color: #cc0000;">Bunu mu demek istediniz?</span>&#8221; </strong></em>mekanızması bunun en iyi örneklerinden biridir. Google&#8217; nin ki kadar gelişmiş olmasada, hiç yoktan sitenizde kullanabileceğiniz bu sistemi Soundex ile birlikte yapabilirsiniz. Mesela Abdullah kelimesini aratırken yanlışlıkla <em><strong>Abdullak</strong></em> yada <strong><em>Abdullaah </em></strong>yazdığımızda klasik arama yöntemi olan <strong>Like</strong> ile kayıt boş dönecektir, halbuki <strong>soundex </strong>kullandığımızda Abdullah kelimesini bulmamız mümkün.</p>
<pre class="brush: sql; title: ; notranslate">
SELECT * FROM TabloAdi WHERE SOUNDEX('kelime') = SOUNDEX(AlanAdi)
</pre>
<p><strong>Case </strong>Sql cümlemizin içinde if kullanımının neredeyse birebir aynını bu şekilde kullanabiliriz. Amacımız elimeze geçen kaydın tam istediğimiz şekilde olması, sql cümlemizden gelen veriyi direk grid veya benzeri bir nesnede listelememizde çok daha verimli olacaktır.</p>
<pre class="brush: sql; title: ; notranslate">-- sadece if else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- if elseif else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	    When AdSoyad='Deneme' Then 'Sende Tamam ol :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- eğer koşul gerçekleşirse sonucu diğer tablodan almaya ilişkin bir örnek. Yani eğer adısoyadı abdullah ise görevinin ne olduğunu döndürüyoruz.
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then (Select gorev from gorevler where id=kullanicilar.gorevid)
	else 'Görevsiz.'
	end as 'Sonuc'
FROM
	kullanicilar

-- örnekler biraz bencil olabilir ama aklıma başka bişiy gelmedi :)
</pre>
<p><strong>SubString </strong>Kaydın başlangıç ve bitişini belirleyebildiğimiz klasik substring fonksiyonun aynısı. Kaydın istediğimiz kısmını görüntülememize olanak sağlan fonksiyonumuz.</p>
<pre class="brush: sql; title: ; notranslate">select Substring(AlanAdi,1,10) from TabloAdi -- 1=başlangıç, 2=bitiş karakteri.
</pre>
<div class="shr-publisher-152"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/t-sql-ile-newid-soundex-case-ve-substring-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET C# T-SQL ile İlgili İpuçları</title>
		<link>http://www.apostylee.com/asp-net-csharp-t-sql-ile-ilgili-ipuclari/</link>
		<comments>http://www.apostylee.com/asp-net-csharp-t-sql-ile-ilgili-ipuclari/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 16:38:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[transaction]]></category>

		<guid isPermaLink="false">http://asp.net-csharp-t-sql-ile-ilgili-ipuclari.html</guid>
		<description><![CDATA[Daha çok yeni başlayanların işine yarayacağını düşündüğüm bu yazıda sizlerle, gerek tasarım tarafında gerekse kod tarafında karşılaştığım sıkıntıların çözümlerini, teknik ve taktiklerini paylaşmaya çalışacağım. Birden fazla DataReader kullanmak: Eğer aynı yerde iki adet DataReader nesnesi kullanmak isterseniz karşınıza, &#8220;Bu komut ile ilişkili, öncelikle kapatılması gereken açık bir DataReader zaten var.&#8221; gibisinden bir hatayla kaşılaşırsınız. Bunu önlemek için ConnectionString&#8217; inize &#8220;MultipleActiveResultSets=true&#8221; [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Daha çok yeni başlayanların işine yarayacağını düşündüğüm bu yazıda sizlerle, gerek tasarım tarafında gerekse kod tarafında karşılaştığım sıkıntıların çözümlerini, teknik ve taktiklerini paylaşmaya çalışacağım.<!--devam--></p>
<ul>
<li><strong>Birden fazla DataReader kullanmak:</strong> Eğer aynı yerde iki adet DataReader nesnesi kullanmak isterseniz karşınıza, <em>&#8220;Bu komut ile ilişkili, öncelikle kapatılması gereken açık bir DataReader zaten var.&#8221; </em>gibisinden bir hatayla kaşılaşırsınız. Bunu önlemek için ConnectionString&#8217; inize &#8220;<strong><em>MultipleActiveResultSets=true</em></strong>&#8221; ibaresini eklemelisiniz.</li>
<li><strong>Nesnelere özellikler atamak: </strong>Örneğin bir tane asp:Label imiz var ve buna kod kısmından bir click yada bir style ataması yapacağız. Bunu yapabilmek için nesnelere Attributes özelliğinden yükleme yapabiliyoruz. Örneğin; <em><strong>Button1.Attributes.Add(&#8220;style&#8221;, &#8220;color:red&#8221;); </strong></em>veya <strong><em>Button1.Attributes.Add(&#8220;onclick&#8221;, &#8220;alert(&#8216;deneme&#8217;)&#8221;); </em></strong>gibi.. Bunu bir kenara not alın çünki çoğu zaman çok işinize yarayacak bir özellik.</li>
<li><strong>HTML etiketlerine kod tarafından erişip işlem yapmak:</strong> Mesela bir <em>&lt;table&gt;</em> yada <em>&lt;div&gt;</em> iniz var yani HTML ile oluşturduğunuz bir etiket, bunlara <strong>runat=&#8221;server&#8221;</strong> ve <strong>d=&#8221;herhangibirid&#8221; </strong>ifadelerini eklediğinizde kod tarafından erişip işlem yapabilirsiniz. Örneğin <strong>herhangibirid.Visible = false;</strong> deyip işlem sonunda o id ye sahip elemanı görünmez yapabilirsiniz. Yani ekstradan javascript kasmanıza gerek kalmaz. Yapabilecekleriniz sadece bu değil tabiki, içine içerik ekleyebilir style ayarlarını değişebilir kısacası desteklenen tüm özellikleri ayarlayabilirsiniz.</li>
<li><strong>GridView Nesnesinin renklendirilmesi:</strong> Bahsettiğim olay şu, gridview de listeleme yaptığımızda bir satırın farklı diğer satırın farklı renkte olma olayı. Bunu kodla çözememizde mümkün fakat GridView&#8217; in AlternatingRowStyle özelliği ile koda gerek kalmadan rahatça çözelbiliriz. Örnek Kullanım: <strong><em>&lt;asp:GridView ID=&#8221;GridView1&#8243; runat=&#8221;server&#8221;&gt;&lt;AlternatingRowStyle BackColor=&#8221;Red&#8221; /&gt;&lt;/asp:GridView&gt;<br />
</em></strong></li>
<li><strong>Bir işlemi yapmadan önce Eminmisiniz sorusunu javascript kullanarak sorma: </strong>İster GridView içinden bir kayıt silerken, ister bir kaydı güncellerken nerde kullanmak isterseniz kullanabileceğiniz bu işlemi, eğere nesnemizde OnClientClick özelliği varsa direk oraya <strong><em>OnClientClick=&#8221;return confirm(&#8216;Bu Kategoriyi silmek istediğinizden emin misiniz?&#8217;);&#8221; </em></strong>yoksa yukarıda anlattığım Attributes şeklinde onclick olarak nesneye ekleyebilirsiniz. <strong><em>NesneId.Attributes.Add(&#8220;onclick&#8221;,&#8221;return confirm(&#8216;Bu Kategoriyi silmek istediğinizden emin misiniz?&#8217;)&#8221;)<br />
</em></strong></li>
<li><strong>Sql sorgusunda Insert ile birlikte Select ifadesini bir arada kullanmak:</strong> Normal insert cümlemiz şu şekilde yazılıyor, <strong><em>Insert Into TabloAdi (Alan1,Alan2) Values (&#8216;Değer1&#8242;,&#8217;Değer2&#8242;) </em></strong>anlaşılacağı üzere tablomuzdaki alanlara karşılık gelen değerleri tablomuza ekliyoruz. Diyelimki farklı bir tablodaki kayıtları istediğimiz koşula göre diğer tablomuza ekliyoruz. Hemen örneğimize bakalım; <strong><em>Insert Into VerilerinEklenecegiTablo (Alan1,Alan2,Alan3) Select tablo_alani1, tablo_alani2,&#8217;&#8221;+TextBox1.Text+&#8221;&#8216; From DigerTablo Where id=1 </em></strong>Gödüğünüz gibi koşullu bir şekilde farklı bir tablodan diğer tabloya kayıtlarımızı ekliyoruz, ekstra olarak dışardan bir verininde girilmesini istiyorsak &#8221; arasına değişkenimizi yada değerimizi yazıyoruz.</li>
<li><strong>Aynı anda ilişkili iki tabloya veri eklemek:</strong> Öncelikle olayımızı biraz açayım, diyelim veritabanımızdaki iki tabloya kayıt gireceğiz, ama bu tablolar bir birleriyle ilişkili. Yani; id | adsoyad | email &#8212;&gt; Bu bizim birinci tablomuz adı <strong>Kullanici </strong>olsun id | kullanici_id | resimadi | tarih &#8212;&gt; Buda bizim Kullanici tablosuyla ilişkili olan <strong>Resimler </strong>ablomuz olsun. Senaryomuza göre yeni bir kullanıcı kayıt olurken bir resim yüklüyor ve bu resimi biz Resimler tablomuza kayıt yapmak istiyoruz. İlk bakışta kolay gibi görünüyor fakat, ilk anda Kullanici tablosunda ilgili kullanıcıya ait bir kayıt olmadığından id değerinin ne geleceğini bilmiyoruz, yani Resimler tablosundaki kullanici_id yerine yazacağımız id belli değil. Bunu bir kaç değişik yoldan yapmak mümkün, fakat kullandığım yöntemlerin içinde en sağlıklı olanı <strong><em>SELECT IDENT_CURRENT(&#8216;TabloAdi&#8217;)) </em></strong>şeklinde sorgulama yapıp gelecek olan id nin ne olduğunu bulmak. Örnek cümlemizin tamamına bakalım;<br />
<span style="color: #ff0000;"><strong>Adım 1:</strong></span> <strong><em>Insert Into Resimler (kullanici_id,resimadi,tarih) Select Ident_Current(&#8216;Kullanicilar&#8217;),&#8217;resminadi.jpg&#8217;,&#8217;01.01.2009&#8242;<br />
</em><span style="color: #ff0000;">Adım 2:</span></strong> <strong><em>Insert Into Kullanicilar (adsoyad,email) values (<a href="mailto:'abdullah','abdullah@xxx.com'">&#8216;abdullah&#8217;,'abdullah@xxx.com&#8217;</a>)<br />
</em></strong>Bu şekildeki kullanımda milisaniye cinsinden aynı anda işlem yapılırsa sıkıntı olabilir, haricinde sıkıntı olması zor. Bu sıkıntıyıda  <em><strong>Transaction</strong></em> kullanarak aşabiliriz. Transaction kullanım örneğinide aşşağıda ayrı bir başlık halinde anlatmaya çalışacağım.</li>
<li><strong>Transaction Nedir ve Kullanımı:</strong> Zaman zaman aynı anda birden fazla Insert veya Update işlemi yaptığımız oluyor. Bu cümlelerin büyük çoğunluğu zaman zaman birbiriyle ilişkili oluyor. Herhangi bir teknik hata veya farklı nedenlerden dolayı bir kopma olduğunda bütünlüğümüz boluzulur ve kayıtlarımızda ciddi sıkıntılar meydana çıkar.<strong><em> </em></strong>Bunu engellemek için Transaction denen mekanızmayı kullanıyoruz. Bu sayede herhangir bir hata durumunda işlemlerin hiçbiri gerçekleşmiyor, hata olmadığında ise hepsi birden gerçekleşiyor.<strong><em> </em></strong>Hemen bir örnekle Transaction kullanımı örnekleyeyim.<strong><em> </em></strong>
<pre class="brush: csharp; title: ; notranslate">
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings[&quot;baglanti&quot;].ToString());// Sql bağlantımızı yapıyoruz.
SqlCommand islem1 = new SqlCommand(“Insert Into TabloAdi_1 (alan1,alan2,alan3) Values (‘değer1′,’değer2′,’değer3′)”, conn);// 1. işlemimiz

SqlCommand islem2 = new SqlCommand(“Insert Into TabloAdi_2 (alan1,alan2,alan3) Values (‘değer1′,’değer2′,’değer3′)”, conn);// 2. işlemimiz

SqlCommand islem3 = new SqlCommand(“Insert Into TabloAdi_3 (alan1,alan2,alan3) Values (‘değer1′,’değer2′,’değer3′)”, conn); // 3.işlemimiz

conn.Open(); // Bağlantımızı açıyoruz.
SqlTransaction sqlTrans = conn.BeginTransaction(); // Transaction nesnemizi tanımlıyoruz.

// Transaction nesnesine işlemleri eşitliyoruz.
islem1.Transaction = sqlTrans ;
islem2.Transaction = sqlTrans ;
islem3.Transaction = sqlTrans ;
//Burda try cath bloğunu kullarak hata olmadığında ve olduğunda yapılacak işlemleri belirtiyoruz.
try
{ // eğer hata yoksa try bloğunun içi çalışır !
islem1.ExecuteNonQuery();
islem2.ExecuteNonQuery();
islem3.ExecuteNonQuery();
sqlTrans.Commit(); // hiç bir problem oluşmamışsa işlemlerimiz yapılıyor.
}
catch (Exception hata)
{ // eğer bir hata olmuşsa catch bloğu çalışır !
Response.Write(“İşleminiz yapılamadı, Oluşan Hatanın Detayı&lt;br /&gt;”+hata);
sqlTrans.Rollback(); // herhangi bir sebepten dolayı hata oluşmuşsa işlemlerimiz geri alınıyor yani yapılmıyor.
}
finally
{ // hata olsun olmasın finally bloğunun içi çalışır ! burda nesneleri sonlandırıyoruz.
conn.Close();
conn.Dispose();
sqlTrans.Dispose();
islem1.Dispose();
islem2.Dispose();
islem3.Dispose();
}
</pre>
<p>Umarım faydalı olur, zaman zaman günlerce üzerinde uğraştığım, saç baş yonduğum konuları sizlerle tecrüblerim dahilinde paylaşmaya çalıştım. Eğer hatalı bir yer görürseniz lütfen yorum olarak ekleyin, gerekli düzeltmeleri yapayım. Öğrendikçe bu tarz paylaşımlarıma devam edeceğim, kalın sağlıcakla.</li>
</ul>
<div class="shr-publisher-146"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/asp-net-csharp-t-sql-ile-ilgili-ipuclari/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>MSSQL Tarih Saat Problemi ve Çözümü</title>
		<link>http://www.apostylee.com/mssql-tarih-saat-problemi-ve-cozumu/</link>
		<comments>http://www.apostylee.com/mssql-tarih-saat-problemi-ve-cozumu/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 16:24:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[saat]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tarih]]></category>

		<guid isPermaLink="false">http://mssql-tarih-saat-problemi-ve-cozumu.html</guid>
		<description><![CDATA[Arkadaş işin içine tarih saat girince heryer karışıyor. Belki sadece bana oluyordur ama araştırdığım kadarıyla bu sıkıntıları herkes yaşıyor. Sıkıntıların başında tarihleri karşılaştıramama geliyor. Özellikle 29.01.2009 15:38:39 şeklindeki tarih saat formatındaki verilerde sürekli problem oluşuyor. Veritabanındaki DateTime veri türündeki bir alana örneğin; DateTime.Now.ToString(&#8220;MM.dd.yyyy hh:mm:ss&#8221;) şeklinde verileri girdiğimizde, bu formattaki farklı bir tarihle karşılaştırma yapmak istediğimizde [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Arkadaş işin içine tarih saat girince heryer karışıyor. Belki sadece bana  oluyordur ama araştırdığım kadarıyla bu sıkıntıları herkes yaşıyor. Sıkıntıların  başında tarihleri karşılaştıramama geliyor. Özellikle 29.01.2009 15:38:39  şeklindeki tarih saat formatındaki verilerde sürekli problem oluşuyor.</p>
<p>Veritabanındaki DateTime veri türündeki bir alana örneğin; <strong>DateTime.Now.ToString(&#8220;MM.dd.yyyy hh:mm:ss&#8221;)</strong> şeklinde verileri girdiğimizde, bu formattaki farklı bir tarihle karşılaştırma  yapmak istediğimizde sıkıntı çıkıyor. Örnek sql sorgusu <strong>Select * from  Tablo_Adi Where DateTime_Alan_Adi &gt; &#8216;&#8221;+DateTime.Now.ToString(&#8220;MM.dd.yyyy hh:mm:ss&#8221;)+&#8221;&#8216;</strong> mantıken problem olmaması gerekiyor çünki yazdığımız verileri karşılaştırıyoruz,  ama gelin görünki sapıtan bir sorgu.</p>
<p>Çözüm kısmında karşımıza sql in <strong>getDate()</strong> fonksiyonu çıkıyor.</p>
<p>Öncelikle MSSQL için Date Time fonksyionlarının <a href="http://msdn.microsoft.com/en-us/library/aa258863(SQL.80).aspx" target="_blank"> burada</a> anlatıldığını belirteyim.</p>
<p>İzleyeceğimiz yol gayet basit. Veritabanı işlemlerinde kullanacağımız tüm  tarih işlemlerini getDate() ile yapacağız.</p>
<p><strong>Örnek;</strong><br />
<strong>Insert into Tablo_Adi (alan_adi) Values (getDate())</strong> &#8212; bu şekilde  eklediğimiz bir bilgiyi şu şekilde çok sağlıklı bir şekilde karşılaştırabiliriz.</p>
<p><strong>Select * From Tablo_Adi Where alan_adi &gt; getDate()</strong> &#8212; gördüğünüz gibi  değişkenler veya programlama dilimizin tarih saat fonksiyonlarını bir kenara  koyup bu işler için sql in kendisini kullanıyoruz. Esasında en mantıklısıda bu,  neden bu zaman kadar bunu düşünemedim bilmiyorum. Aklıma gelmişken yukarıda  verdiğim Date Time fonksiyonlarını incelerseniz tarih işlemleri için hertürlü  dönüşümü yapabilirsiniz.</p>
<p><strong>Örnek;<br />
getDate()</strong> bize böyle bir çıktı veriyor = <strong>29.01.2009 15:00:00<br />
DATEADD(day, 10,getDate())</strong> dediğimizde gün sayısına 10 ekliyoruz, eğer day  yerine hh yazsaydık saati 10 saat ileri alacaktık = <strong>02.02.2009 15:00:00<br />
DATEPART(yy,getDate()) </strong>şeklinde sadece yılı alırız = <strong>2009</strong></p>
<p>Aşağıdaki tabloda yukarıdaki örneklerdeki kısaltmaların açıklamaları  bulunuyor.</p>
<table style="border-style: solid; border-width: 1px; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px;" border="0" width="236" bordercolor="#C0C0C0">
<tbody>
<tr valign="top">
<th class="label" width="44%">Açıklama</th>
<th class="label" width="56%">Kısaltmalar</th>
</tr>
<tr valign="top">
<td width="44%">Yıl</td>
<td width="56%">yy, yyyy</td>
</tr>
<tr valign="top">
<td width="44%">Çeyrek</td>
<td width="56%">qq, q</td>
</tr>
<tr valign="top">
<td width="44%">Ay</td>
<td width="56%">mm, m</td>
</tr>
<tr valign="top">
<td width="44%">Yılın Günü</td>
<td width="56%">dy, y</td>
</tr>
<tr valign="top">
<td width="44%">Gün</td>
<td width="56%">dd, d</td>
</tr>
<tr valign="top">
<td width="44%">Hafta</td>
<td width="56%">wk, ww</td>
</tr>
<tr valign="top">
<td width="44%">Haftanın Günü</td>
<td width="56%">dw</td>
</tr>
<tr valign="top">
<td width="44%">Saat</td>
<td width="56%">hh</td>
</tr>
<tr valign="top">
<td width="44%">Dakika</td>
<td width="56%">mi, n</td>
</tr>
<tr valign="top">
<td width="44%">Saniye</td>
<td width="56%">ss, s</td>
</tr>
<tr valign="top">
<td width="44%">Milisaniye</td>
<td width="56%">ms</td>
</tr>
</tbody>
</table>
<div class="shr-publisher-120"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/mssql-tarih-saat-problemi-ve-cozumu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL ile sıkça sorulan fonksiyonlar (Bölüm 1)</title>
		<link>http://www.apostylee.com/sql-ile-sikca-sorulan-fonksiyonlar-bolum-1/</link>
		<comments>http://www.apostylee.com/sql-ile-sikca-sorulan-fonksiyonlar-bolum-1/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 15:46:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Sql]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://SQL-ile-sikca-sorulan-fonksiyonlar-(Bolum-1).html</guid>
		<description><![CDATA[1- En son 10 kaydı listeler 2- Gruplanacak_AlanAdi içindeki verilere göre gruplama işlemi yapar. 3- BirinciAlan dan IkinciAlan ı çıkarıp sonucu Sonuc alanında gösterir. 4- Belirtilen alandaki en büyük değeri bulup EnBuyuk alanında sonucu görüntüler. 5- Bilgileri rastgele çağırmak için kullanılır. Eğer rastgele 5 veri çekmek istersek Select TOP 5 * From&#8230; dememiz yeterli olacaktır. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><pre class="brush: sql; title: ; notranslate">
Select TOP 10 * From TABLOADI Order By ID DESC
Select Gruplanacak_AlanAdi From TABLOADI Group By Gruplanacak_AlanAdi
Select Sum(BirinciAlan-IkinciAlan) as 'Sonuc' From TABLOADI
Select Max(AlanAdi) as 'EnBuyuk' From TABLOADI
Select * From TABLOADI Order By NEWID()
</pre>
<p><strong><br />
1- </strong>En son 10 kaydı listeler<br />
<strong>2-</strong> Gruplanacak_AlanAdi içindeki verilere göre gruplama işlemi yapar.<br />
<strong>3-</strong> BirinciAlan dan IkinciAlan ı çıkarıp sonucu Sonuc alanında gösterir.<br />
<strong>4-</strong> Belirtilen alandaki en büyük değeri bulup EnBuyuk alanında sonucu görüntüler.<br />
<strong>5-</strong> Bilgileri rastgele çağırmak için kullanılır. Eğer rastgele 5 veri çekmek istersek Select TOP 5 * From&#8230; dememiz yeterli olacaktır.<br />
Denemeden yazdığım için ufak tefek syntax (bir nevi yazım yanlışı) hataları olabilir. Bildirirseniz sevinirim. Kolay gelsin..</p>
<div class="shr-publisher-21"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/sql-ile-sikca-sorulan-fonksiyonlar-bolum-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
