2010-06-10 40 views
1

简化表结构(表不能在这个时候被合并):MySQL的 - 限制左连接来发生的第一次约会的时间?

表A:

dts_received (datetime) 
dts_completed (datetime) 
task_a (varchar) 

表B:

dts_started (datetime) 
task_b (varchar) 

我想怎么办是确定完成任务需要多长时间。

的加入参数会是这样的

ON task_a = task_b AND dts_completed < dts_started 

的问题是,有可能是dts_completed之后出现的多个日期倍。

如何创建一个连接,只有返回的表A-日期时间后发生的第一表B-日期时间?

回答

2
SELECT task_a, dts_completed, 
bb.started 
FROM tableA 
INNER JOIN 
(SELECT task_b, MIN(dts_started) as started 
FROM tableB GROUP BY taks_b)bb 
ON (bb.task_b = tableA.task_a AND bb.started > tableA.dts_completed) 
3
select a.task_a as task, min(b.dts_started) as dts_started 
from TableA a 
inner join TableB b on a.task_a = b.task_b 
    and a.dts_completed < b.dts_started 
GROUP BY a.task_a 
+1

'GROUP BY a.task_a' – a1ex07 2010-06-10 18:13:33

+0

谢谢,剪切和粘贴错误! – RedFilter 2010-06-10 18:21:58