powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка данных по многофакторным критериям + рандом
7 сообщений из 7, страница 1 из 1
Выборка данных по многофакторным критериям + рандом
    #39642286
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, можно ли такую задачу решить полностью на стороне БД или без обработки на клиенте не обойтись?

Есть БД с календарными событиями. Структура БД такова, что события могут быть разовые (на конкретную дату), еженедельные (на определенный день недели), ежемесячные (на конкретный день месяца) и ежегодные. События могут быть разного типа. Для некоторых типов есть дополнительное поле приоритета (чтобы упорядочить события одинакового типа).
Есть запрос, который на конкретную дату возвращает полный набор соответствующих событий. Мне из этого набора нужно получить одно единственное событие (если оно вообще есть), по критериям в следующем порядке.

1. Если на указанную дату есть официальный государственный праздник, то в интервале времени с 10:00 до 19:00 выбирается этот праздник. В остальное время (с 00:00 до 10:00 и с 19:00 до 00:00) этот праздник выбирается с вероятностью 50% (то есть в половине случаев он не выбирается и проверяются другие критерии).
[тип="государственные праздники"]

2. Если на указанную дату есть какие-то религиозные события, то в интервале времени с 10:00 до 19:00 выбираются они. В остальное время это событие выбирается с вероятностью 50%.
[тип="религиозные праздники"]

3. Если на указанную дату есть какие-то устоявшиеся (но не официальные) события, типа "Старый новый год", "День дурака", то выбираются они.
[тип="неофициальные праздники"]

4. Если на указанную дату есть какие-то юбилейные события (годовщины), то выбираются они.
[тип="юбилеи"]

5. Если на указанную дату есть какие-то шутливые праздники (типа праздников на каждый день), то с вероятностью 50% выбираются они, независимо от времени суток.
[тип="шутливые праздники"]

6. Если есть какие-то другие события, то с вероятностью 50% выбираются они.
[тип="прочее"]

Критерии проверяются в указанном порядке. Если на какую-то дату попадает более одного события, то выбирается только одно из них (с наибольшим приоритетом).
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642303
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Есть запрос, который на конкретную дату возвращает полный набор соответствующих событий. Мне из этого набора нужно получить одно единственное событие (если оно вообще есть), по критериям в следующем порядке.Если не принимать в расчет вероятности в 5 и 6 пунктах, то решается просто - отсортировать в порядке убывания приоритета и взять первую запись.
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642327
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятности почти во всех пунктах есть, мне хотелось бы получить некоторую вариативность результатов.
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642350
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да в процедуру всю эту логику можно разобрать, в чём сложность то?
подставлять нужное во WHERE, в зависимости от рандома
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642354
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Вероятности почти во всех пунктах есть, мне хотелось бы получить некоторую вариативность результатов.Ну тогда добавить во все выбираемый записи случайное число, а перед сортировкой отфильтровать по нему с использованием порога.
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642465
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Мне почему-то казалось, что функция rand в запросе вычисляется один раз.
...
Рейтинг: 0 / 0
Выборка данных по многофакторным критериям + рандом
    #39642472
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Мне почему-то казалось, что функция rand в запросе вычисляется один раз.Запросто. Зависит от того, где именно оно используется.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка данных по многофакторным критериям + рандом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]