Другой новичок PostgreSQL вопрос.Как выбрать записи с использованием связей таблиц и временных меток?
У меня есть что-то вроде этого:
CREATE TABLE user (
userID bigserial primary key,
name varchar(50) NOT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
CREATE TABLE session (
sessionID bigserial primary key,
userID int NOT NULL,
lastAction timestamp NULL DEFAULT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
CREATE TABLE action (
actionID bigserial primary key,
sessionID int NOT NULL,
lastAction timestamp NULL DEFAULT NULL,
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
Пользователь может иметь несколько сеансов, каждый с несколькими действиями сессии.
У каждого пользователя есть сеансы, срок действия которых истекает, и в этом случае вводится новый, и любое действие, которое они принимают, каталогизируется там.
Мой вопрос: как мне заняться захватом действий только для избранного пользователя, только с его сессий, и только если они произошли 1 день назад, 2 дня назад, неделю назад, месяц назад или для всех время.
Я посмотрел на документы, и я думаю, что interval()
является то, что я ищу, но я только знаю, как окончить сессии:
(part of a join here) e.lastAction >= now() - interval '4 hours'
Это один либо возвращает мне то, что мне нужно или это не так. Но как мне заставить его вернуть все записи, созданные с 1 дня назад, 2 дня назад и т. Д. Синтаксис и логика SQL все еще немного запутанны.
Итак, в идеальном мире я хочу задать вопрос, как, сколько действий сделал этот пользователь за 2 дня? У меня созданы отношения и временные метки, но я пишу запрос, с которым я столкнулся с ошибкой.
Рассмотрите возможность размещения соответствующих данных образца и желаемого результата – peterm