Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Troche dziwny select
Forum PHP.pl > Forum > Przedszkole
Snowak
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.
Taifun
Zaraz dam edita jak coś wymyślę. Robie na localu w8 tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.