Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Troche dziwny select
Snowak
post 4.03.2008, 16:14:26
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
Go to the top of the page
+Quote Post
Taifun
post 4.03.2008, 16:30:08
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

Ostrzeżenie: (10%)
X----


Zaraz dam edita jak coś wymyślę. Robie na localu w8 tongue.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 23:18