Licznik dni

0

Witam serdecznie,
Potrzebuję wykonać pewną funkcjonalność do mojego projektu ale nie mam pomysłu jak to wykonać. Chodzi o to że mam dwie takie tabelki jak poniżej.
Users | Cash
UserID | CashID
Name | Amount
| Date
| UserID
I teraz tak, każdemu użytkownikowi codziennie dodaję jakaś wypłatę, więc rekordów w bazie jest sporo. Wyciągam wartość maksymalną z pola Amount za pomocą .Max(a.kwota => kwota)
No i jestem w stanie wyświetlić, kto zarobił najwięcej do tej pory, jakie ma imie i nazwisko i kiedy ten najwyższy zarobek padł oraz obliczyć ile dni upłyneło od czasu ustanowienia tego że tak powiem rekordu przez:

DateTime d1;
DateTime d2;
return (d1 - d2).TotalDays;

I problem w tym wszystkim jest taki, że jak już pobieram tą najwyższą wartość z pola amount i wyświetlam kto to jest i od ilu dni jego rekord jest niepobity, to w momencie gdy ten sam użytkownik od tym samym UserID, ustanowi nowy rekord, to licznik zaczyna startować od nowej daty a chciałbym, żeby liczyło od daty poprzedniej.

Pomożecie?

0

Przede wszystkim operujesz ciągle na jednej dacie (tej związanej z konkretnym użytkownikiem) i na aktualnej. W ten sposób nie wyliczysz różnicy między dzisiejszym dniem a przedostatnim rekordem. Musisz dodać tabelę z historią pobitych rekordów a następnie zrobić warunek, że odliczanie liczysz od najnowszej daty tylko wtedy kiedy zmienił się użytkownik.

Przyklad:
nazwa: rekord
rekord id
user id
date

0

Tylko z tym, że do tej nowej tabelki Rekord wartości musiałbym wprowadzać ręcznie tak?

0

Piszesz aplikację opartą o bazę danych. Kiedy następują podwyżki updejtuje Ci się data, analogicznie musisz zakodować wprowadzanie nowych danych do nowej tabeli. Za każdym razem kiedy padnie rekord wrzucasz do bazy id usera oraz date, możesz również dodać wysokość rekordu (amount).

Różnica polega na tym że jak zmienia CI się data idzie instrukcja updejt a jak dodajesz nowy rekord wprowadzasz go poprzez insert.

0

To rozumiem jest najprostszy sposob? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1