我想记录用户状态,然后能够根据我们保留的更改记录进行历史报告。我正在尝试在 SQL 中执行此操作(使用 PostgreSQL),并且我有一个用于记录用户更改的建议结构,如下所示。
CREATE TABLE users (
userid SERIAL NOT NULL PRIMARY KEY,
name VARCHAR(40),
status CHAR NOT NULL
);
CREATE TABLE status_log (
logid SERIAL,
userid INTEGER NOT NULL REFERENCES users(userid),
status CHAR NOT NULL,
logcreated TIMESTAMP
);
这是我根据数据提出的表结构。
对于状态字段,“a”代表活动用户,“s”代表暂停用户,
INSERT INTO status_log (userid, status, logcreated) VALUES (1, 's', '2008-01-01');
INSERT INTO status_log (userid, status, logcreated) VALUES (1, 'a', '2008-02-01');
因此,该用户在 1 月 1 日被暂停,并在 2 月 1 日再次活跃。
如果我想在 2008 年 1 月 15 日获得暂停的客户列表,那么应该显示用户 ID 1。如果我在 2008 年 2 月 15 日收到一份暂停的客户名单,那么用户 ID 1 应该不会出现。
1)这是为这种查询构建数据的最佳方式吗?
2)我如何查询此结构或您建议的修改结构中的数据,以便我可以简单地有一个日期(比如 1 月 15 日)并仅在 SQL 中找到在该日期具有活动状态的客户列表?这是 SQL 的工作吗?