2012-01-25 42 views
1

我相信会有人有一个非常简单的答案,但我不能工作了,我的生活:我有3个表,看起来是这样的:如何获取多个日期范围的mysql结果?

Vehicles: Vehicle_id, Reg_number...
Datalogger: Logger_id, event, status, date...
Vehicle_Loggers: Vehicle_id, Logger_id, installed_from, installed_to

(关系是与此相同名称的列)

使用这些表我怎么会得到一定的车辆的日志(事件和状态)的全部历史,即使它已安装在不同的时间多次记录器?

我知道这可以使用光标来完成,但是因为这实际上是一个设置操作(获取已连接到车辆的记录器集合,然后使用该记录器的给定日期范围获取每个记录器的报告)

编辑:伐木者可以在一生中使用多个车辆,因此列入日期。

感谢

加雷思

回答

1

你可以这样说:

select v.Reg_number, d.* from Vehicles v 
inner join Vehicle_Loggers vl on vl.Vehicle_id = v.Vehicle_id 
inner join Datalogger d on d.Logger_id = vl.Logger_Id 
where v.Reg_number = ... 

只需更换Reg_number于预期之一。


您考虑的日期,可能会是这样的:

select v.Reg_number, d.* from Vehicles v 
inner join Vehicle_Loggers vl on vl.Vehicle_id = v.Vehicle_id 
inner join Datalogger d on d.Logger_id = vl.Logger_Id and d.date between vl.installed_from and vl.installed_to 
where v.Reg_number = ... 
+0

AFAIK这并没有考虑到安装的日期,所以我们会得到每个记录历史无论哪个它被连接到的车辆。 – ridecar2

+0

@ ridecar2尝试第二个查询,然后:) –

+0

谢谢,这工作完美(从未意识到,您可以在JOIN子句中使用多个条件。) – ridecar2

相关问题