【发布时间】:2011-11-17 06:38:49
【问题描述】:
我有三张桌子:
Measurements (MeasureID, Time, Distance, Value)Events(EventID, Time Value)EventValues (EventDataID, EventID, Type, Value)
我需要获取每次测量、最近的事件(过去)及其相关的事件值数据。
我当前的查询很丑:
SELECT
M.*,
(SELECT TOP 1 EV.value FROM [Event] E JOIN EventValues EV ON E.EventID = EV.EventID
WHERE M.Time >= E.Time ORDER BY M.Time-E.Time) AS Data,
FROM [Measure] M
ORDER BY M.Distance
它只允许我从EventValues 表中选择一列(我需要更多)
有什么方法可以使用连接来完成吗?
编辑:我还需要从测量表中选择所有条目,即使它们在第一个事件之前(即,只需为连接选择空数据)
【问题讨论】:
-
测量和事件表是如何关联的?没有外键,它们是通过时间值关联的吗?
-
如果给定的最近事件有 2 条 EventValue 记录,在这种情况下您的期望是什么?要查看两条记录还是只查看其中一条?另外,临时表可以接受吗?
标签: sql join sql-server-2008-r2