Merhaba
Farz edelim arabaların listesi var ve bu arabalara puan vere biliyoruz maximum 5 yildiz.
1 arabaya 1000 adam puan vermişse bunun ortalamasını çıkarıb 5 yıldız üzerinden sonuc puan çıkarmam lazım.
Sorum şu ki, bu işlemi sql ile yapmam mı lazım yoksa java kodlarıylamı?
Teşekkürler

soruldu: 18 Eyl '14, 02:24

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%

değiştirildi: 18 Eyl '14, 02:25


Bence veritabanına yüklenmek yerine java ile yap. Anladığım kadarıyla zaten rakamları çekmişsin tekrar sorgu çalıştırmana gerek yok. Saygılarımla...

permanent link

cevaplandı: 18 Eyl '14, 03:04

fdurmus77's gravatar image

fdurmus77
376154
cevap kabul oranı: 16%

Her defasında o arabaya kaç tane ve kaç puan verilmiş DB den çekip hesaplamak yerine, ben şöyle yapıyorum.

Araba tablosunda kaç tane oy(RateCount) verildigini ve son oy (Rating) ortalamasını tutuyorum. Yeni bir oy verildiğinde bu iki alanı şöyle güncelliyorum.

rating = ((rating * rateCount) + newRating) / (rateCount + 1);
rateCount ++;

Böylece her zaman oylayacagınız nesne(araba) kendi üzerinde güncel puanı tutmus oluyor. Ayrıca yeni gelecek oyu hesaplamak içinde oy sayısını tutuyor.

Siz sadece arabaOy ara tablosuna insert işlemi ve araba tablosuna update işlemi yapmıs oluyorsunuz. Update den once de java tarafında sadece guncellenecek olan veriyi oluşturmus oluyorsunuz -ki bu sizin iş kuralınız bunun uygulama tarafında olması yönetimini ve bakımını güçlendirir (debug, test, ...)-

permanent link

cevaplandı: 18 Eyl '14, 02:59

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 18 Eyl '14, 03:09

Cevabınız
toggle preview

powered by BitNami OSQA