-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 202

Тяжелая задача, возможно ли ее реализовать за счет SQL? Только логика запросов к Mysql

16.05.2025, 23:16. Показов 1426. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тяжелая логика, постарался расписать и показать в картинках. Прикрепил скриншеты.

Есть запрос.

MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
WITH RankedMessages AS (
    SELECT 
        n.id,
        n.id_u,
        n.time,
        n.title_prev,
        ROW_NUMBER() OVER (PARTITION BY n.id_u ORDER BY n.time DESC) AS rn
    FROM 
        news n
)
SELECT 
        id,
        id_u,
        time,
        title_prev
FROM 
    RankedMessages
ORDER BY 
    rn, time DESC
Результат выполнения которого на 1 скриншете.

Есть втрарая картинка, там просто отсортировали по времени. Не соблюдается поочередность. Новости могуд идти подряд от одного пользователя.

Есть идея, возьмем энный интервал, предположим это будут сотки, может неделя месяц и тд. Остановимся на сутках.

Сперва необходимо вытащить записи за все сутки, главное не допустить от одного пользователя 2 новости подряд. Сортировка по времени от большего к меньшему. Ок.

Тут заноза, один пользователь опубликовал 2 и более новости. Как это решить, чтобы разбавить, спускаемся на сутки ниже и берем 1 последнюю новость другого пользователя и разбовляем эти 2 новости.

Ок, разбавили. Спускаемя на сутки ниже, откуда уже взяли 1 новость, чтобы разбавить новости в последующих сутках, ее исключаем и выполняем тоже самое.

Исключение, это когда в бд остались новости от одного пользователя и их просто нечем разбавить, просто, пусть идут подряд.
Миниатюры
Тяжелая задача, возможно ли ее реализовать за счет SQL? Только логика запросов к Mysql   Тяжелая задача, возможно ли ее реализовать за счет SQL? Только логика запросов к Mysql  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2025, 23:16
Ответы с готовыми решениями:

Тяжело ли это реализовать новичку
Есть исходник чата на PHP, MySQL и jQuery (http://ruseller.com/lessons/les757/demo.zip). Сложно ли...

логика php + mysql я не могу реализовать
Здравствуйте!Помогите пожалуйста с такой проблемой. Существует 5 полей, и кнопка. Кнопка...

Кому не тяжело гляньте к задачам пожалуйста
в общем у нас началась практика по web програмированию начали решать задачи в php некоторые я...

5
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 202
16.05.2025, 23:30  [ТС]
Сперва, берем новости за последние сутки, чередуем их, разбавляем когда 2 подряд, новость берем из суток ранее.
Ок, берем новости за вчера, чередуем, разбавляем.
И тд.

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

Добавлено через 6 минут
Старыми новостями, только разбавляем свежие, когда у 2 свежих 1 автор, с учетом чередования по пользователю
0
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 202
17.05.2025, 23:52  [ТС]
Хелпс
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
19.05.2025, 16:20
Выглядит, как какой-то кастомный алгоритм сортировки. Я не понял до концa что значит "разбавить". Видимо надо вводить поле "orderValue" и кастомными запросами, или серией поочередных запросов составлять его как надо. А в нужном месте просто order by orderValue
0
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 202
19.05.2025, 18:51  [ТС]
Не выйдет. Из таблицы выбираем схожие новости, релевантные.
Даже если проставить порядок и выбрать, это сработает только тогда когда выбираем все записи.

При выборке релевантного контента, с сортировкой order by orderValue. Получится тоже самое...


Задача:
- Сгруппировать записи по месяца, чтобы получилось, сперва выбираем за первый месяц, затем за второй.
- Внутри каждого месяца, если записи идут от одного пользователя подряд. Разбавить их, внутри месяца.

Возможен такой вариант, когда за последний месяц, публикации только от одного пользователя. В таком случаи, достать запись от другого пользователя, пусть она на месяц ранее. Главное чтобы подряд записи не шли от одного пользователя и не получилось так, что сперва выбираем записи всех пользователей по 1 последней, затем по второй(правило одного месяца, затем за второй, должно помочь это решить).
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
20.05.2025, 10:53
Сгруппировать записи по месяца, чтобы получилось, сперва выбираем за первый месяц, затем за второй.
Ну находим макс дату за интервал, выбираем саму новость под макс дату
SQL
1
2
3
4
5
6
7
WITH groups_cte AS (
SELECT MAX(n.time) AS maxTime, n.id_u AS userId, MONTH(n.time) AS monthNumber
FROM news n WHERE n.time > '2 month interval'
GROUP BY n.id_u, MONTH(n.time) 
)
SELECT * FROM news n
JOIN groups_cte g ON n.time = g.maxTime AND n.id_u = userId
Видимо далее переберать на php и разбавлять
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2025, 10:53
Помогаю со студенческими работами здесь

Тяжелые и легкие(для сервера) функции PHP
Сел за оптимизацию кода. Возникло пару вопросов: 1) Если текст содержит около 2000 символов, то...

Тяжёлый скрипт вешает браузер. Что делать?
Есть некий скрипт. Браузер его обрабатывает нормально. Понадобилось выполнить скрипт много раз...

Нужно сделать таймер ТЯЖЕЛЫЙ СЛУЧАЙ
Доброе время суток дорогие форумчани. У меня такая проблема: нужно, что бы пользователь после...

Не загружаются 'тяжелые' картинки на сервер
Здравствуйте! Столкнулся с такой проблемой, что картинки больше 2mb не загружаются в папку на...

Какой самый тяжелый скрипт?
Доброе время суток! Подскажите, пожалуйста! Есть сайт новостей. На нем нет видео и используют...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru