首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL查询用户是否具有与文档的最新版本匹配的日志

使用MySQL查询用户是否具有与文档的最新版本匹配的日志
EN

Stack Overflow用户
提问于 2019-01-17 05:44:02
回答 1查看 54关注 0票数 2

我正在尝试实现一个版本控制系统( SOP ),其中定期修订这些文档,并跟踪用户是否阅读了SOP的最新版本。

我可以列出用户已经阅读了最新版本的所有SOP,但我不能列出他们过期的所有SOP,例如,他们需要阅读它们的通知。

SOP表可以包含多个,例如

代码语言:javascript
复制
SOP Index   SOP Code    SOP Version
1             AAA               1
2             AAA               2
3             AAA               3
4             BBB               1
5             CCC               1
6             CCC               2

SOP日志如下所示:

代码语言:javascript
复制
SOP Index    User ID     SOP Version
    1           1            1
    2           1            2
    4           1            1

因此,这表明用户1已经读取了BBB的最新版本,但尽管v3可用,但只读取了AAA的v2。

我已经设法运行了一个查询,它只显示基于其代码的最新SOP,例如从上面3,AAA,3| 4,BBB,1| 6,CCC,2,但我正在努力解决如何将其与记录SOP索引,用户和版本号的单独表进行比较,并确定他们是否读取了最新版本。

这将选择最新的SOP:

代码语言:javascript
复制
SELECT a.sop_group, a.sop_code, a.sop_version, a.sop_title, a.sop_issued, 
c.log_sop_version
FROM data_sops a
INNER JOIN (
    SELECT sop_code, MAX(sop_version) sop_version, sop_index
    FROM data_sops
    GROUP BY sop_code) b ON a.sop_code = b.sop_code AND a.sop_version = b.sop_version

我设法将其扩展为选择用户阅读过的最新版本的SOP:

代码语言:javascript
复制
SELECT a.sop_group, a.sop_code, a.sop_version, a.sop_title, a.sop_issued, c.log_sop_version
    FROM data_sops a
    INNER JOIN (
        SELECT sop_code, MAX(sop_version) sop_version, sop_index
        FROM data_sops
    GROUP BY sop_code) b ON a.sop_code = b.sop_code AND a.sop_version = b.sop_version
    LEFT JOIN log_sops c ON a.sop_index = c.log_sop_sop_index
    WHERE c.log_sop_user_index = '$userid' AND c.log_sop_version = a.sop_version

我认为行WHERE c.log_sop_user_index = '$userid' AND c.log_sop_version = a.sop_version可以将操作符从=更改为<>来产生相反的效果,但它似乎没有那么简单,并且需要3个表的连接,我正在努力弄清楚!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-17 15:38:56

您的查询应该是这样的,以确定您的用户还没有阅读哪个版本。

代码语言:javascript
复制
select data_sops.sop_index,data_sops.sop_code,data_sops.sop_version
from data_sops 
join (SELECT sop_code, MAX(sop_version) sop_version 
          FROM data_sops GROUP BY sop_code) a 
on data_sops.sop_code = a.sop_code 
and data_sops.sop_version = a.sop_version 
where not exists 
    (select log_sop_sop_index from log_sops 
     where data_sops.sop_index = log_sop_sop_index 
     and log_sop_user_index = '$userid')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54225856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档