Рейтинг:
2
OriginalGriff
Вы уже определились со "структурой данных", выбрав базу данных! Он основан на таблице, столбце и строке, поэтому ваша структура будет достаточно плоской.
- Я? У меня была бы таблица для пользователей и отдельная таблица для сообщений, которая включает в себя внешний ключ к таблице пользователей. А в таблице Posts будет просто столбец timestamp, который позволяет вашим запросам извлекать пользовательские записи за любой период времени, который вы можете пожелать.
Salim Hoseini
По вашему методу мне нужно получить всю базу данных для 4 запросов в день, еженедельно, ежемесячно и ежегодно, что не является оптимальным.
Richard Deeming
Предполагая, что вам просто нужно количество сообщений, вы можете использовать GROUPING SETS
чтобы получить сводку по годам, месяцам и дням в одном запросе.
Суммирование данных с помощью оператора группирования наборов - простой разговор[^]
SELECT
YEAR(PostDate) AS PostYear,
MONTH(PostDate) AS PostMonth,
DAY(PostDate) As PostDay,
COUNT(1) As NumberOfPosts
FROM
UserPosts
WHERE
UserID = @UserID
GROUP BY
GROUPING SETS
(
YEAR(PostDate),
(YEAR(PostDate), MONTH(PostDate)),
(YEAR(PostDate), MONTH(PostDate), DAY(PostDate))
)
;