Tam o sırada, başka bir pillinetwork sitesi olan hafif.org'da: "karbonat dünyayı kurtarabilir mi?"


Etiketler: , ,

belki biraz garip gelicek ama bu sitenin sağ tarafında bulunan son yorumlar kısmında listelenen yorumların sql sorgusu nasıl oluşturuluyor.. ben listeleme ve count olayını aştımda desc olarak sıralayamadım bir türlü..

tablolar

haber_id
baslik

yorum_id
gonderen_id
count(haber_id) as toplam_mesaj

yorum id yi kullanınca distinct olayı geçerli olmuyor.. bir türlü yazamadım sql'i :)

çok alakasız oldu ama içimden geldi buraya sormak


  • Frosten
  • 3 yorum var
  • 14 Mayıs 2006 08:56

Yorumlar

select top 10 t1.baslik, count(t2.*) as sayı
from haberler t1 (NOLOCK), yorumlar t2 (NOLOCK)
where t1.haber_id = t2.haber_id
group by t1.haber_id
order by sayı desc

impala |  (0 puan) 16 Mayıs 2006 00:03

degerleri Iki tablodan toplamak buyuk tablolar da performans problemi yaratabilir.
Ben olsam
haber_id
baslik

*count

*time
(yeni) iki kolon eklerdim.
Her yorum girildiginde basliklardaki o iki kolonu (count=count+1, time=now()) diyerek update,
time kolununa bir index
ve
'select * from basliklar order by time desc limit 10'

ap |  (0 puan) 16 Mayıs 2006 10:51

dün de ben şu şekilde yapmıştım.. stored procedure içinde kullandım bunu..

select top 23 yorum.haber_id, haber.baslik, count(yorum.yorum_id) as toplam_yorum, max(distinct yorum.yorum_id) as son_id from yorum inner join haber on yorum.haber_id = haber.haber_id group by yorum.haber_id, haber.baslik
order by son_id desc

max(distinct kolon) diye bir olayı denedim vs 2005 express deki query builder ile..
sonrada repater ile işledim güzel oldu..

Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound

Dim objRow As Data.DataRowView objRow = e.Item.DataItem

Dim baslik As HyperLink = CType(e.Item.FindControl("baslikLink"), HyperLink) Dim tmpBaslik As String = objRow("baslik")

If Len(tmpBaslik) > 17 Then baslik.Text = Left(tmpBaslik, 17) & "..." Else baslik.Text = tmpBaslik End If

baslik.NavigateUrl = "haberdetay.aspx?hid=" & objRow("haber_id")

End Sub

powered by dotnet
Frosten |  (0 puan) 16 Mayıs 2006 12:44

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Beğendiğiniz bir yazıya "tuttum" demek için başlığın yanındaki yıldıza tıklayabilirsiniz.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)
bildirgec.org bölümleri
pillinetwork hesabınızla giriş yapın.

pilli ilan

son yorumlar

pilli ilan

Tutulanlar Banner

bildirgecinfo

bildirgec.org içeriği kullanıcıları tarafından üretilen kolektif bir blogdur.