Нужны два решения для быстрых алгоритмов - PullRequest
0 голосов
/ 21 февраля 2011

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

Мне нужно применить два правила, которые должны отменять ставки: Первое правило - не более 4 последовательных заявок, что означает, что у пользователя: 10,50 10,47 10,36 10,20 10,00 поэтому 10.00 должны быть отменены.

Второе правило - не более 9 заявок среди 50 лучших заявок, опять же, 10-е должно быть отменено.

Я делаю это очень долго, просто бегаю по таблице ставок и рассчитываю на последовательные. Но я хотел бы знать, если у кого-то есть другая идея ... (php + mysql)

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2011

Для второго критерия:

SELECT username, count(*) as bids
FROM 
  (SELECT username
  FROM bids
  ORDER BY bid_timestamp DESC
  LIMIT 50)
WHERE username = :username
GROUP BY username
HAVING COUNT(*) > :bid_limit

Если эта запись возвращает какие-либо строки, запретить новую ставку. Возможно, это лучший способ сделать это, но это лучше, чем возвращать все 50 строк в php, а затем выполнять итерацию и подсчет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...