8/18/2005

SQL - Problem ve Cozumu

Dün bi proje için ASP.Net ile yazdığım bir web aplikasyonu için Datagrid hazırlıyordum. DataGrid'e girilecek raporlar için her ayın örneğin 30 veya 31 inden sonra yeni giriş yapılmasını engellemem gerekiyordu. SQL Server veritabanında Transact SQL kullanarak bunu nasıl yaparız bi bakalım...

Örneğin kullanıcın girdiği ilk entry için GünId değeri 1 olacaktir. Önceki bir makale'de en üstteki değeri nasıl seçebileceğinizi yazmıştım. (Örnek: SELECT TOP 1 * FROM OrnekTablo - bize en üstteki değeri verecektir).

Peki ya SQL ile o tablodaki en alttaki değeri almak istiyorsak? (SELECT BOTTOM diye birşey yok merak ettiyseniz.) Bana lazım olan örneğin en son girilen GunId'si 31 ise onu almaktı. Şu şekilde gerçekleştirdim...

SELECT TOP 1 DayId FROM OrnekTablo ORDER BY DESC
Böylece liste tersten sıralanmış olarak verilecek ve doğal olarakta en üstteki 1. değer en son girilen değer olmuş olacak(31'inci gün mesela). (@@identity değerini kullanmak işinizi görüyorusa onu da kullanabilirsiniz.)