Forum

Bildirimler
Hepsini Temizle

SQL

2 Yazılar
2 Üyeler
0 Reactions
476 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Bir haber sitesi yazıyorum. Yazarler ve Yazilar şeklinde iki tabloda veri tutuyorum. Ben SQL den ASP.NET teki repeater içine yazarların ve en son yazarlara ait günlük yazıları resimleriyle beraber listelemek istiyorum. Yazı lindki tıklatıldığında detay.aspx?id=yaziid şeklinde link alacak şekilde yapmak itiyorum. Son üç yazyı yazar resimleriyle beraber alabiliyorum. Yalnız yazarları aynı yoldan aldığımda yazarlar geliyor ama o yazar kaç defa yazdıysa o kadar ekrana geliyor.


Kod aşağıdaki şekilde. Burda son yazılan üç yazıyı yazar resimleri ve linkleri ile çekiyorum. Ben sadecebütürn yazarları ve günlük yazılarını çekmek istiyorum. Birde bununla beraber yazarları 5 erli sayfalamak itiyorum.


Çok şey mi itedim bilmiyorum. Şimdiden ilgi ve alakanız için teşekkür ederim.


void SonYazilar()


{


DataTable dtYazilar = system.GetDataTable("SELECT top 3 dbo.Yazilar.Yaziid, dbo.Yazilar.Baslik, dbo.Yazilar.Tarih, dbo.Yazarlar.AdSoyad, dbo.Yazarlar.Resmi " +


"FROM dbo.Yazilar INNER JOIN " +


"dbo.Yazarlar ON dbo.Yazilar.Yazarid = dbo.Yazarlar.Yazarid");


rpYazilar.DataSource = dtYazilar;


rpYazilar.DataBind();


}


 

 
Gönderildi : 09/01/2011 16:01

(@ismailadar)
Gönderiler: 134
Estimable Member
 

merhabalar,


yazarları almak için soyle bir sql sorgusu kullanabilirsin.


select * from (


select ROW_NUMBER() over(partition by YazarID order by YazarID) sira,* from (


select *


FROM dbo.Tbl_Yazarlar t RIGHT join [master].[dbo].[Tbl_Yazilar] y


on y.[YaziID]=t.YazarID


) l


) m where Sira=1


 


yazarları 5 erli sayfalama kısımında ise yapman gereken bir sp yzıpğ ona sayufa sayısını parametre olarak gondermen soyleki sayfa sayısı eğer iki ise sana dondurecegi kayıtları betweenle alıp 5 ile 10 arasında alamn lazım onun içinde aşşağıdaki kodu kullanabiliersin


 


create proc KisiSayfa


(


@sayfano int, @kayitsayisi int = 3


)


as


begin


declare @min int


declare @max int


set @min = (@sayfano -1)* @kayitsayisi + 1


set @max = @sayfano* @kayitsayisi


select * from


(


SELECT


ROW_NUMBER() OVER (ORDER BY Ad, soyad) SiraNo,


*


FROM dbo.TBL_Yazar


) TMP


where SiraNo between @min and @max


end


 

 
Gönderildi : 10/01/2011 12:51

Paylaş: