none
Farklı Kurlar için Değerine göre sıralama RRS feed

  • Soru

  • Merhaba;

    Farklı döviz tipleri barındıran bir site için fiyata göre sıralama yapmam gerekiyor. Fakat kur tipi ne olursa olsun tl bazında değerine göre sıralanması gerekmekte. Ben veritabanında iki veri tipi kullandım bunun için;

    Property_Fiyat decimal(18, 2)
    Property_Fiyat_Kur varchar(5)

    Ve bir adet de daha önceden hazırlamış olduğum günlük dövizlerin tl bazında değerlerini ....txt dosyasına kaydeden bir void um var.

    Nasıl bir yol izlemeliyim bir fikir de olsa çok yardımı olur

    Teşekkürler

    4 Ocak 2016 Pazartesi 08:57

Yanıtlar

  • Merhaba

    Veritabanım MSSQL olmakla birlikte alanlar isimlendirmeler hepsi gerçek garip ama gerçek hocam :)

    Cihan hocama da önerilerinden ötürü teşekkür etmekle birlikte Çetin hocamın yaklaşımının daha faydalı olduğunu kabul etmem ve kendisine ayrı bir teşekkür etmem gerek sanırım. Çünkü ayrı bir tabloda kur tl karşılıklarını tutma ve çekerken çarparak çekme fikri kendi çapımda bi aydınlatma yaratmış sorunu çözmemle birlikte de ayrı bi keyfe dönüşmüştür.

    Aşağıda benzer sorun yaşayan arkadaşlara faydalı olması dileği ile sql sorgumu paylaştım.

    select Properties.Property_Id, Properties.Property_Tip, Properties.Property_Durum, Properties.Property_Fiyat, Properties.Property_Fiyat_Kur, Properties.Property_M2, Regions.Region_Ad, Property_Builds.Property_Build_Ad, Property_Pics.Property_Pic_Ad, Property_Pics.Property_Pic_Alt, Property_Contents.Property_Content_Ad, Properties.Property_Fiyat * Property_Exchanges.Property_Fiyat as New_Property_Fiyat from Properties inner join Property_Exchanges as Property_Exchanges on (Properties.Property_Fiyat_Kur = Property_Exchanges.Property_Fiyat_Kur) inner join Property_Contents as Property_Contents on (Properties.Property_Id = Property_Contents.Property_Id) inner join Property_Pics as Property_Pics on (Properties.Property_Id = Property_Pics.Property_Id) inner join Property_Builds as Property_Builds on (Property_Contents.Property_Build_Id = Property_Builds.Property_Build_Id) inner join Regions as Regions on (Properties.Region_Id = Regions.Region_Id) where Property_Pics.Property_Pic_Avatar='true' and Property_Contents.Property_Lang=@Property_Lang and Properties.Property_Aktif=@Property_Aktif order by New_Property_Fiyat asc

    Teşekkürler

    İyi Günler..

    4 Ocak 2016 Pazartesi 14:58

Tüm Yanıtlar

  • IComparable ?
    4 Ocak 2016 Pazartesi 09:24
    Moderatör
  • Hocam teşekkürler 

    IComparable kullandım fiyatın bulunduğu sınıf için fakat ben iki tabloyu birleştirerek çekiodum ilk sorguda bu durumda arraylistden donen tek sınıfı bind ettiğimde adı açıklaması gibi özellikler gelmiyor bununla ilgili bir öneriniz olursa (arraylistde tablo birleştirme felan) çok makbule gecer :)

    İyi Günler

    4 Ocak 2016 Pazartesi 10:46
  • ArrayList bir object koleksiyonudur. Neden List kullanmıyorsun? Ve hatta bu durumda SortedList ?
    4 Ocak 2016 Pazartesi 11:01
    Moderatör
  • hocam pek bi nedeni yok hep kullandığım bi sistem var ve sadık kalamaya çalışıorm genelede..

    bu sorted list ile ilgili benim duruma yakın bir örnek ya da makale verebilirseniz beni bahtiyar edersiniz hocam..

    4 Ocak 2016 Pazartesi 11:34
  • SortedList in List'den farkı sadece koleksiyonunu yapacağın sınıf IComparable ise ona göre sıralar ya da bir IComparer alır onunla sıralar.

    https://msdn.microsoft.com/en-us/library/system.collections.sortedlist(v=vs.110).aspx

    4 Ocak 2016 Pazartesi 11:47
    Moderatör
  • Veritabaniniz ne bilmiyorum ama kullandiginiz alanlar garip olmus. Property_Fiyat_decimal ne? TL cinsinden tutari mi? Yoksa doviz cinsinden mi? Property_Fiyat_Kur varchar diyor, herhalde dovizin cinsi gibi bir sey tutuyorsun burada. 

    Sonucta yapmaniz gereken select sirasinda TL'ye cevirip ona gore order by ile almak. Bugunun kuruna gore almak istediginizi ve kurlar diye bir tabloda Property_Fiyat_Kur (PK) ve TL alanlari oldugunu var sayarsak sunun gibi bir sey olurdu:

    with fiyatlar (fiyat) as
    ( select t1.Property_Fiyat * t2.TL 
      from tabloAdi t1
      inner join kurlar t2 on t1.Property_Fiyat_Kur = t2.Property_Fiyat_Kur )
    select * from fiyatlar
    order by fiyat
    Gercek tablo yapilarina gore uyarlaman yeterli (bu isimler herhalde gercek degil, cok garip isimlendirme olmus).

    4 Ocak 2016 Pazartesi 12:15
  • Merhaba

    Veritabanım MSSQL olmakla birlikte alanlar isimlendirmeler hepsi gerçek garip ama gerçek hocam :)

    Cihan hocama da önerilerinden ötürü teşekkür etmekle birlikte Çetin hocamın yaklaşımının daha faydalı olduğunu kabul etmem ve kendisine ayrı bir teşekkür etmem gerek sanırım. Çünkü ayrı bir tabloda kur tl karşılıklarını tutma ve çekerken çarparak çekme fikri kendi çapımda bi aydınlatma yaratmış sorunu çözmemle birlikte de ayrı bi keyfe dönüşmüştür.

    Aşağıda benzer sorun yaşayan arkadaşlara faydalı olması dileği ile sql sorgumu paylaştım.

    select Properties.Property_Id, Properties.Property_Tip, Properties.Property_Durum, Properties.Property_Fiyat, Properties.Property_Fiyat_Kur, Properties.Property_M2, Regions.Region_Ad, Property_Builds.Property_Build_Ad, Property_Pics.Property_Pic_Ad, Property_Pics.Property_Pic_Alt, Property_Contents.Property_Content_Ad, Properties.Property_Fiyat * Property_Exchanges.Property_Fiyat as New_Property_Fiyat from Properties inner join Property_Exchanges as Property_Exchanges on (Properties.Property_Fiyat_Kur = Property_Exchanges.Property_Fiyat_Kur) inner join Property_Contents as Property_Contents on (Properties.Property_Id = Property_Contents.Property_Id) inner join Property_Pics as Property_Pics on (Properties.Property_Id = Property_Pics.Property_Id) inner join Property_Builds as Property_Builds on (Property_Contents.Property_Build_Id = Property_Builds.Property_Build_Id) inner join Regions as Regions on (Properties.Region_Id = Regions.Region_Id) where Property_Pics.Property_Pic_Avatar='true' and Property_Contents.Property_Lang=@Property_Lang and Properties.Property_Aktif=@Property_Aktif order by New_Property_Fiyat asc

    Teşekkürler

    İyi Günler..

    4 Ocak 2016 Pazartesi 14:58