我有一个查询,我要从 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/