mysql - 加入 3 个表并从一个表中获取最后更新日期

标签 mysql sql sql-server

我有一个查询,我要从 4 个表中查找结果:客户、客户计划、INSPLANS 和 CLIENTLOG 我的查询从表中提取了更多信息,但简化后的信息如下:

select clients.name,
       insplans.desc,
       clientplans.group_no,
       convert (varchar,clientlog.FNDATE,112) as LASTUPDATEDATE,
FROM 
       PROJECT.DBO.CLIENTS
join CLIENTPLANS
       on clients.RECORD_ID = clientplans.CLIENT_ID
join INSPLANS
       on insplans.RECORD_ID = clientplans.PLAN_ID
join CLIENTLOG
       on clientlog.CLIENT_ID = clients.RECORD_ID
WHERE clients.record_id = clientplans.client_id
       and clientplans.SEQUENCE_NUM < 2

我的问题是,当我加入 CLIENTLOG 表时,我的结果从 3k 膨胀到 33K,其中包含大量重复项。 clientlog 表显示对 clients 表进行的每次更新的条目。我只是想获得记录的最后更新日期。我知道我应该通过转换函数使用 MAX,但我感觉我连接表的方式也不正确。如果有人能提供一些说明,那就太棒了。

谢谢

最佳答案

试试这个..

SELECT clients.NAME, 
       insplans.desc, 
       clientplans.group_no, 
       CONVERT (VARCHAR, clientlog.fndate, 112) AS LASTUPDATEDATE, 
FROM   project.dbo.clients 
       JOIN clientplans 
         ON clients.record_id = clientplans.client_id 
       JOIN insplans 
         ON insplans.record_id = clientplans.plan_id 
       JOIN (SELECT Max(fndate) FNDATE, 
                    client_id 
             FROM   clientlog 
             GROUP  BY clientid) CLIENTLOG 
         ON clientlog.client_id = clients.record_id 
WHERE  clients.record_id = clientplans.client_id 
       AND clientplans.sequence_num < 2 

关于mysql - 加入 3 个表并从一个表中获取最后更新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512310/

相关文章:

php - 哪种方式在mysql上存储统计数据更有效?

sql-server - SQL Server 2008 R2(.Net 2.0 应用程序)中的死锁问题

python - 根据条件删除

C# - 如何显示有关从另一个表检索的 SQL 表的元数据?

php - 绑定(bind)变量的数量与 token 的数量不匹配

mysql - 如何计算平均间隔时间

sql - 对 SQL 查询中的具体行数进行分组

mysql - 在 solr import 中关闭 ResultSet 后不允许操作

mysql 1452 在使用插入表时

mysql - 主键本身可以包含重复项但具有唯一行吗?