поиск наиболее ближайшего числа с установленному

Статус
В этой теме нельзя размещать новые ответы.

kpuk

Новичок
поиск наиболее ближайшего числа с установленному

все просто: тотализатор цены

сколько завтра будет стоить ммм... дерево.
Сегоддня оно стоит 2,5

ставки:
2,12
2,3
2,25
2,4
2,48
2,53
2,58

наступило "завтра" и цена стала 2,45

так кто выиграл? Ближайшее число это 2,48
потому как разница до цены всего 0,03 а не 0,05 как у 2,4

так вот как бы вычислить это программно?

есть мысли с кучей запросов и сравнений но мне кажется это не тот путь. другого просто не знаю.

Где капать?
 

Delph

Новичок
От полученного значения (2,45) отнимаешь "ставки". Далее abs().Полученные числа сортируешь по возрастанию. Первое число - твое.
 

kpuk

Новичок
PHP:
$stavka= mysql_query("select * FROM db_stavka WHERE date='2006-01-16'");
$rows = mysql_num_rows($stavka);
	for($k=0;$k < $rows;$k++)
	{
	$date=mysql_result($stavka, $k , "date");
	$sp=mysql_result($stavka, $k , "sp");
	$delta=($pifsp-$sp);
	$abs_=ABS($delta);
	$abs=sprintf ("%01.2f", $abs_);
	}
вот теперь ищу как отсортировать.
Думал использовать LEAST ();
но что-то не получается никак.
HELP! как сортировать не знаю ...
$pifsp = это стоимость а $sp это ставки
 

SiMM

Новичок
kpuk, может всё же SQL подучите, а? PHP к вашей задаче не имеет никакого отношения - она решается средствами SQL. Вам же даже запрос подсказали, осталось только с русского на английский перевести.
 

kpuk

Новичок
ну я и не претендую что я супер гений.
чего-бы я тогда тут делал :)
Спасибо... кажется прозрел

-~{}~ 01.02.06 15:00:

я тупой.

никак не въеду как вывести самое малое значение.

уж простите меня.
 

kpuk

Новичок
вот оно как... спасибо
прям в запрос надо было а я ковыряю PHP.

спасибо огромное за решение!

-~{}~ 06.02.06 14:14:

в общем сделал я эту хрень (тотализатор)
моя голова додумалась вот до чего:

у нас есть БД с котировками. Т.е. есть дата и стоимость.

Делаем 3-и базы:
users (кто зарегестрировался)
stavka (собственно ставки юзеров на определенную дату)
winners (база победителей на определенную дату)

что делаем:
1 смотрим какое сегодня число, и запрашиваем, есть ли на сегодня ставки.
2 если есть, смотрим сколько время (дело в том что стоимость мы узнаем только после 12:00) и если есть ставки и есть 12:00 смотрим, добавили в основную базу котировку или нет. если нет ругаемся! Говорим что человек тормаз и все такое (его телефон и имя), если есть, то начинаем СЧИТАТЬ победителя!

и так у меня есть ТРИ запроса в базу:
ПЕРВОЕ на точное совпадение (мало ли - вдруг есть такой)
если есть то выводим надпись с подравлением и его именем, else нет, то:
1 запрос (на минимальную ставку от цены)
1 запрос (на максимальную ставку от цены)

теперь просто считаем:
от ЦЕНЫ отнимаем ставку на повышение
от ЦЕНЫ отнимаем ставку на понижение

затем убираем минус ABS

а потом просто сравниваем, что меньше. Вот что меньше тот и выиграл (тот оказался ближе всего к реальной стоимости)

при этом условии выводим победителя
и заносим его в базу. Если в базе есть уже такое число и победитель, то ничего не делаем (а просто выводим надпись).

это коротко, только принципы.

что хочу добавить:
По итогам вывести список всех кто делал ставку с их ставками.
Для каждого, где-то через месяц, сделать график статистики его ставок и реальной стоимости (пусть смотрит и радуется)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху