Forum
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();
}
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 intdeclare
@max intset
@min = (@sayfano -1)* @kayitsayisi + 1set
@max = @sayfano* @kayitsayisiselect
* from(
SELECT
ROW_NUMBER() OVER (ORDER BY Ad, soyad) SiraNo,
*
FROM dbo.TBL_Yazar
)
TMPwhere
SiraNo between @min and @maxend