Gerekirse Yazarım
Access ve Random Kayıt
Veritabanı olarak access kullanılan bir projede rasgele seçilmiş 5 tane resmi sayfada göstermemiz gerekiyordu.
Fakat Sql`de çalışan ve bize her seferinde 5 farklı kayıt getiren şu kod access`de çalışmıyor.
SELECT top 5 ID FROM Tablo_Adi ORDER BY newid()
Çünki newid() fonksiyonu access için geçerli değildi. Bende zaman sorunu olduğu için en iyi kod çalışan koddur mantığından yola çıkarak dolaylı bir çözüm bulmuştum.
Önce ID leri bir arrayList`e çekip bunların içerisinden rasgele 5 ID yi çekiyordum ama aynı kaydın gelme ihtimali yüzünden her bulduğum ID`yi farklı bir arrayList`e aktarıp bir önceki arrayList`imden çıkartıyordum. Sonuçta elimde birbirinden farklı rasgele seçilmiş 5 adet ID vardı. İşlemin geri kalanını bu 5 ID üzerinden tamamlıyordum. Fakat performans açısından çokta verimli değildi açıkçası :)
Neyse zaman sorunu olduğu için bu şekilde projeyi tamamladım ama araştırmalarım devam ediyordu. Araştırmalar sonucunda şöyle bir örnek buldum;
SELECT TOP 5 ID FROM Tablo_Adi Order By rnd(ID)
Fakat bu seferde rasgele gelen 5 kayıt sorgumuz her çalıştığında aynı geliyordu. Bunun üzerine ufak bir araştırma yaptıktan sonra sorgumuz aşağıdaki son halini almış oldu. Böylece sorgumuz her çalıştığında rasgele seçilmiş 5 farklı kayıt getirir hale geldi.
SELECT TOP 5 ID FROM Tablo_Adi Order By rnd(-(ID)*Time())
Sorgumuzun bu son hali ile ihtiyacımız olan işlemi kolayca gerçekleştirdim. Benzer bir durumla karşılaşan olursa ve benim tekrar ihtiyacım olursa diye buradan da paylaşmak istedim, umarım faydası olur.
| Print article | This entry was posted by Aykut Önen on 17 Şubat 2009 at 23:01, and is filed under Asp.Net, Benden. Follow any responses to this post through RSS 2.0. Yorum veya kendi sitenizden geribildirim yapabilirsiniz. |







yaklaşık 1 yıl önce
tşkler fakat veri tabanından rastgele getirilen bu 5 kayıt artan yada azalan şeklinde bir türlü sıralanamıyor.
yaklaşık 1 yıl önce
@serhat sorgunun mantığı gereği zaten istediğin sıralamanın olmaması normal. Şöyle birşey yapabilirsin belki; sorgudan gelen sonucu ayrı bir işlemden geçirerek sıralama yaptırabilirsin. Sorgu ile aldığın rastgele 5 sonucu bir datatable`a atabilir sonra bu datatable üzerinde sıralama yaptırabilirsin.
yaklaşık 1 yıl önce
Beni boşa harcayacağım saatlerden kurtardın.. Teşekkür ederim..
yaklaşık 11 ay önce
@Can ben teşekkür ederim.
yaklaşık 11 ay önce
dostum çok sağol. walla süper bi kod. tam istediğim olayı yapmış oldu. ellerine sağlık.
yaklaşık 10 ay önce
@tayfun rica ederim, işine yaradıysa ne mutlu :)
yaklaşık 10 ay önce
Çok Teşekkür ederim. newid .mdb de çalışmayınca moralim bozulmuştu. ama sayende moralim düzeldi. Tek kelimeyle harikasın. iyi çalışmalar dilerim.
yaklaşık 10 ay önce
:) ben teşekkür ederim, size de iyi çalışmalar.
yaklaşık 5 ay önce
sağolasın eline sağlık