![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
powiedzmy, że mam kolumnę points. W php losuję sobię jakąś cyfrę nie przekraczającą sumy wartości w tej kolumnie. Teraz chciałbym pobrać taki rekord z bazy danych, w którym suma poprzednich rekordów była mniejsza/równa wylosowanej wartości oraz suma poprzednich rekordów wraz z obecnym rekordem który sprawdzamy była większa/równa wylosowanej wartości. Na przykładzie: mamy takie wartości w kolumnie points w kolejności w jakiej istnieją w bazie 15 10 20 30 10 PHP wylosowało 47 a więc powinniśmy wybrać rekord z wartością pkt 30, bo suma poprzednich wartości (15+10+20=45) jest mniejsza/równa 47 oraz suma poprzednich wartości wraz z tym rekordem (15+10+20+40=75) jest większa/równa. Jak to zrobić? Zależy mi na czystym i szybkim SQLu, więc dobrze by było, aby przy każdym rekordzie nie sumowało od nowa tych wszystkich rekordów lecz pamiętało poprzednie sumowanie i tylko dodało obecny rekord. Zastanawiałem się jak to zrobić w SQLowskiej funkcji, ale jakoś nie mogłem znaleźć w jaki sposób zrobić funkcję, która pobierała by mi po jednym rekordzie z bazy danych... Mając coś takiego, rozwiązanie byłoby dziecinnie proste. Ah, i z góry mówię - tego inaczej nie da rady rozwiązać, bo jest to próba optymalizacji losowania wagowego... Z góry dziękuję za pomoc. Ten post edytował Snowak 4.03.2008, 16:14:58 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:14 |