【发布时间】:2011-01-17 16:11:52
【问题描述】:
阅读 Stackoverflow 有一段时间了,今天轮到我提问了!
表结构
它与对 SQL Server 2005 数据库的查询有关。我有以下表结构:
组件
- 身份证
下载
- 身份证
- componentid(FK 到 components#id)
- 下载日期
进口
- 身份证
- downloadid(FK 到 downloads#id)
- 状态
我想得到什么
我正在尝试获取每个组件的最新下载状态。
到目前为止我在哪里
我已开始编写此查询,但我的联接运行不佳:
SELECT c.id
FROM components as c
JOIN (
SELECT componentid, MAX(downloaddate) as downloaddate, id
FROM downloads
GROUP BY componentid, id
) d ON d.componentid = c.id
-- JOIN on imports here...
我的问题是用于连接的查询不正确。因为我需要为连接选择 id,所以我在 group by 子句中添加了它,现在我得到了每个 componentid 的多条记录,而不是最新的一条。
如果我在连接中单独执行查询,我会得到以下结果。
componentid downloaddate id
8882 2011-01-15 06:00:09.773 595862
8882 2011-01-16 06:00:09.847 598422
8882 2011-01-17 06:00:09.940 600971
8951 2010-11-15 03:00:22.550 450221
8951 2010-11-16 03:00:21.730 452431
8951 2010-11-17 03:00:21.920 454668
8961 2011-01-17 02:00:33.077 600532
8961 2011-01-17 02:00:59.070 600536
8983 2008-07-17 11:59:53.780 122
9005 2009-09-01 04:00:38.320 48918
9005 2009-09-02 04:00:36.260 49280
相反,我需要这样的东西:
componentid downloaddate id
8882 2011-01-17 06:00:09.940 600971
8951 2010-11-17 03:00:21.920 454668
8961 2011-01-17 02:00:59.070 600536
8983 2008-07-17 11:59:53.780 122
9005 2009-09-02 04:00:36.260 49280
有谁知道我应该如何编写我的加入来达到预期的结果?
提前非常感谢
【问题讨论】:
-
1个
download可以关联多个imports吗?如果是这样,您需要哪个状态值? -
是的,一个下载有多个导入。我想获取最新导入的状态(它们也有日期)。
标签: sql sql-server join