Mysql Veri Tipi Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek

    Merhaba müridler

    Kuyumcuya internet sitesi yapıyorum.Biliyosunuz ki altın fiyatları sürekli değişiyor.

    Onun için Fiyat alanım şu şekilde 520,15 TL olarak kayıt ediyorum.

    Altın fiyatları arttığı zaman mysql şu şekilde update çalıştırıp fiyatların tümünde oynama yapmak istiyorum.

    update urunler

    set Fiyat = Fiyat + 20

    bu şekilde yaptığım zaman alan kısmı böyle oluyor 540 TL virgülden sonrasını atıyor.

    bu arada veri tipim varchar , daha önce double , decimal falan denedim fiyatları nokta şeklinde yani 420.55 olarak yazdım ama veritabanına eklerken 420 olarak ekledi.

    sayı veri tiplerinde bir türlü başaramadım olayı.

    tekrar varchara geçtim onda da küsüratlı sayıyı atıyor.update denemelerim bunlar

    update urunler

    set Fiyat = Fiyat + '20,00'

    update urunler

    set Fiyat = Fiyat + '20,'

    ama yemedi bir türlü, nasıl çıkarım bu işten?

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek

    Kullanman gereken veri tipi kesirli sayı saklayabilen Float, Decimal gibi alanlar olmalı, varchar hiç uygun değil.
    Bunları denediğini söylemişsin ama acaba tam sayı dışında kesir uzunluğu da belirttin mi?
    Ben Decimal(13,2) ile bir örnek hazırladım. 13 tam sayı kısmı, 2 ise kesir.
    Örneği Fiddle'dan inceleyebilirsin : http://sqlfiddle.com/#!2/9e96c/1

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    WebJas
    WebJas's avatar
    Kayıt Tarihi: 15/Eylül/2009
    Erkek

     

    update urunler from fiyat = fiyat*(1.2,5) şeklinde denesen ?

    WebJas tarafından 10/May/13 18:31 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    veri tipi olarak double,float seçebilirsin hocam. aradaki işaret de virgül değil nokta olacak. ayıca koyduğun tek tırnakları da kaldır, onlar string türevleri için geçerli

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hybris
    Hybris's avatar
    Kayıt Tarihi: 12/Haziran/2007
    Erkek

    sorun çözülmüş zaten de ben o sqlfiddle a nasıl daha önce denk gelmemişim lan sadece jsfiddle var sanıyodum:|

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Hocam veritabanında Altının net gram fiyatını kaydet. Ürünlerde ise ürün ismi ve gramajı şeklinde kaydet. Kullanıcıya gösterirken ürün fiyat : ürüngramaj* altıngram

    şeklinde göster bence. Çünkü her gram değişikliğinde tüm ürünleri update etmen lazım. Diğer türlü sadece tek bir satır güncelleme yaparak bütün ürünlerin fiyatlarını güncellemiş olursun.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    buzukatak bunu yazdı

    Kullanman gereken veri tipi kesirli sayı saklayabilen Float, Decimal gibi alanlar olmalı, varchar hiç uygun değil.
    Bunları denediğini söylemişsin ama acaba tam sayı dışında kesir uzunluğu da belirttin mi?
    Ben Decimal(13,2) ile bir örnek hazırladım. 13 tam sayı kısmı, 2 ise kesir.
    Örneği Fiddle'dan inceleyebilirsin : http://sqlfiddle.com/#!2/9e96c/1


    Tamadır hocam bu tam aradığım, ancak dediğin sayı tipinde olması lazım ama decimal'in o şekilde kullanıldığını bilmiyorum iyi oldu.

    burda 13 tam sayı kısmı 13 tane rakam girilebilir dimi?

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    DrKill bunu yazdı

    Hocam veritabanında Altının net gram fiyatını kaydet. Ürünlerde ise ürün ismi ve gramajı şeklinde kaydet. Kullanıcıya gösterirken ürün fiyat : ürüngramaj* altıngram

    şeklinde göster bence. Çünkü her gram değişikliğinde tüm ürünleri update etmen lazım. Diğer türlü sadece tek bir satır güncelleme yaparak bütün ürünlerin fiyatlarını güncellemiş olursun.


    hocam günlük fiyata göre güncellemiycem altın +5 veya -5 TL düştüğünde güncelleyeceğim onun için toplu update daha iyi gibi geldi bana, senin dediğinide düşünüştüm.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek
    EmQceR bunu yazdı

    Tamadır hocam bu tam aradığım, ancak dediğin sayı tipinde olması lazım ama decimal'in o şekilde kullanıldığını bilmiyorum iyi oldu.

    burda 13 tam sayı kısmı 13 tane rakam girilebilir dimi?

    Ben onu yanlış ifade etmişim düzelteyim hemen. 13 toplam uzunluk. 2'si kesir için ayrıldığından en uzun 11 basamaklı tam sayı eklenebilir.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    buzukatak bunu yazdı
    EmQceR bunu yazdı

    Tamadır hocam bu tam aradığım, ancak dediğin sayı tipinde olması lazım ama decimal'in o şekilde kullanıldığını bilmiyorum iyi oldu.

    burda 13 tam sayı kısmı 13 tane rakam girilebilir dimi?

    Ben onu yanlış ifade etmişim düzelteyim hemen. 13 toplam uzunluk. 2'si kesir için ayrıldığından en uzun 11 basamaklı tam sayı eklenebilir.


    anladım hocam çok teşekkürler

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    renegadealien
    renegadealien's avatar
    Üstün Hizmet Madalyası Savaş Madalyası Başarı Madalyası Üstün Hizmet Madalyası Developer Madalyası
    Kayıt Tarihi: 23/Mart/2003
    Erkek
    buzukatak bunu yazdı

    Kullanman gereken veri tipi kesirli sayı saklayabilen Float, Decimal gibi alanlar olmalı, varchar hiç uygun değil.
    Bunları denediğini söylemişsin ama acaba tam sayı dışında kesir uzunluğu da belirttin mi?
    Ben Decimal(13,2) ile bir örnek hazırladım. 13 tam sayı kısmı, 2 ise kesir.
    Örneği Fiddle'dan inceleyebilirsin : http://sqlfiddle.com/#!2/9e96c/1

    oha ne güzel siteymiş yahu :|

Toplam Hit: 1203 Toplam Mesaj: 12