Расчет уникальных ставок на продукт - PullRequest
0 голосов
/ 22 октября 2009

Продукты (productId INT PK, bidCount INT)

Ставки (bidID INT PK, productId INT, userId INT, isCounts BIT, создано DATETIME)

Между продуктом и ставками существует отношение 1: много.

Каждый цикл ставок длится 1 день, поэтому мне нужно отслеживать уникальные ставки в день и обновлять столбец bidCount. Я устанавливаю isCounts = 1 для каждой строки, которую я обрабатываю в процессе пакетной обработки.

Так что это общее количество уникальных ставок для продукта в течение дня.

У меня есть задание sql, которое запускается каждые 5 минут для обновления bidCount.

Шаги, которые мне нужны для этого запроса:

  1. захватить все строки, которые имеют isCounts = 1
  2. запрос № 1 создает список productID и uniqueBidCounts, где isCounts = 1 запрос № 2 создает список productID и uniqueBidCounts, где isCounts = 0 запрос № 3 создает список productID и uniqueBidCounts с разницей между № 1 и № 2
  3. обновить таблицу продуктов, добавив uniqueBidCounts в столбец bidCount с помощью запроса # 3
  4. установить isCounting = 1 для списка в запросе # 2

Это правильный подход? это сложный подход или его можно упростить?

Обновлено Я добавил созданное поле DATETIMe, поэтому мне придется фильтровать текущий день и удалять любые более старые заявки в другом пакетном задании, которое выполняется ежедневно (или в том же процессе)

Ответы [ 2 ]

0 голосов
/ 23 октября 2009

Я думаю, что isCounts - неправильное направление для вас. Вам нужно будет запросить все ставки в этот день и сгруппировать по userId, выполнить подсчет строк и вставить это число в bidCount.

Так что это общее количество уникальных ставки на товар в течение дня.

У вас не может быть текущего количества уникальных предметов, потому что вы должны каждый раз заново создавать их. Так что, было ли это уже посчитано, не имеет значения.

0 голосов
/ 22 октября 2009

Почему вы не используете триггер? Если я правильно понял вашу проблему, вы можете поставить триггер на вставку в таблицу ставок. В этом триггере вы будете увеличивать bidCount в соответствующей строке таблицы продуктов. И вы также можете составить расписание, которое будет работать в полночь и будет устанавливать bidCount равным 0.

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