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
SQL fiyat güncellemesi ve eski fiyat yardım
4
●97
- 18-12-2021, 11:18:38Ü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:12Yeni 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:131. 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 ;