• 18-12-2021, 11:04:56
    #1
    Merhaba arkadaÅŸlar

    Urün fiyat güncellemesi ve eski fiyatların tutulmasini SQL de nasıl sağlarım
    Ürün telefon Huawei P10 olsun
    SQL
    Urunadi
    Ürün fiyatı

    İlk girdiğim değer 12.10.2021 fiyatı 6500
    Şimdi tekrar fiyat güncellemesi geldiğini düşünelim eski fiyatı da görmek istiyorum

    12.10.2021 6500
    15.10.2021 6800
    12.11.2021 6300

    Aslında amacım mantığını sorgulamak yardımcı olur musunuz

    Teşekkürler
  • 18-12-2021, 11:18:38
    #2
    Ürün Adı | Fiyat | Tarih
    Samsung s22 | 3422 | 2021-10-11 10:10:10
    Samsung s22 | 3422 | 2021-10-12 13:10:10
    Samsung s22 | 3422 | 2021-10-13 15:16:10
    Samsung s22 | 3422 | 2021-10-14 12:10:10

    Eski Fiyatlar diye bir tablo oluşturursun , orijinal ürün tablonda fiyat güncellemesi yapmadan önce şuanki fiyatı çekip yeni tabloya atarsın.
  • 19-12-2021, 02:42:12
    #3
    Yeni tablo oluşturmaya gerek yok. Ben kullanıcılar sistemdeki profil resimlerini güncellediklerinde şu işlemleri yapıyorum, siz de kendinize uyarlayarak yapabilirsiniz.

    Tablo adı: user_images
    id | user_id | fileinfo | created_at | updated_at
    1 | 1 | path/to/avatar.jpg | 2021-07-23 10:11:24 | 2021-07-23 10:11:24
    2 | 1 | path/to/new_avatar.jpg | 2021-07-25 12:44:27 | 2021-07-25 12:44:27
    3 | 1 | path/to/latest_avatar.jpg | 2021-09-28 12:11:22 | 2021-09-28 12:11:22

    Bu tabloda görüldüğü gibi user_id 1 olan kullanıcının 3 tane avatarı var. Son avatarı gösterirken SELECT * FROM user_images WHERE user_id=1 ORDER BY updated_at DESC LIMIT 1 şeklinde sorgu yazarak son satırı alıyorum. Bu arada kullanıcının avatar geçmişini de tutmuş oluyorum. Kullanıcıya daha önce yüklediği avatarları gösterebiliyorum. İsterse avatar geçmişinden bir tanesini yeniden aktif hale getirmesini sağlıyorum. (updated_at sütununu güncelleyerek.)

    Siz de burada kullanıcıyı marka model, fileinfo'yu fiyat olarak ele alarak aynı senaryoyu uygulayabilirsiniz.
  • 19-12-2021, 11:00:13
    #4
    1. seçenek fiyatları farklı bir tabloda tutabilirsiniz. İleride birden fazla fiyatla çalışacağınız durumlarda da işinize yarar.
    2. seçenek fiyat geçmişini tutacağınız bir tablo oluşturup, update trigger eklersiniz. Herhangi bir kod yazmanıza gerek kalmadan, ürün tablonuzdaki herhangi bir fiyat değişikliğinde, eski fiyat otomatik olarak fiyat geçmişi tablonuza kaydedilir.

    Örneğin;
    DELIMITER $$
        CREATE TRIGGER fiyatGecmisineEkle AFTER UPDATE ON urunler
            FOR EACH ROW
                BEGIN
                    IF NEW.fiyat != OLD.fiyat THEN
                        INSERT INTO fiyatGecmisi SET urunAdi = NEW.urunAdi, fiyat = OLD.fiyat, tarih = NOW();
                    END IF;
               END$$
    DELIMITER ;
  • 19-12-2021, 22:11:26
    #5
    Hepinize teşekkür ediyorum ayrı bir tablo açarak yaptım