使用存储在另一个表中的id和日期范围从一个表中获取数据

时间:2013-03-02 20:14:17

标签: sql

我正在编写的应用程序是针对租用给客户的遥测单元,我正在尝试查询特定客户的记录数据,而customer_id_fk表中没有Log列。< / p>

我有以下表格:

客户表:

id | name | ...

单位表:

id | name | ...

RentOut表:

id | start_date | end_date | unit_id_fk | customer_id_fk

日志表:

id | unit_id_fk | datetime | data1 | data2

customer_id_fk表中未包含Log列的原因是,RentOut表中的错误很容易纠正,无需更改Log表中的数据(虽然也许有更好的方法可以做到这一点?)。

1 个答案:

答案 0 :(得分:0)

将客户包含在日志表中会更有效。但是,如果没有它,你可以用一堆连接得到你想要的东西:

select l.*, c.*
from log l left outer join
     RentOut ro
     on l.unit_id_fk = ro.unit_id_rk and
        l.datetime between ro.start_date and ro.end_date left outer join
     Customer c
     on ro.customer_id = c.id
where c.<whatever> = <foobar>

如果RentOut表中的日期确实是日期(没有时间),并且日志记录具有日期时间,那么您可能需要执行更多日期算术才能使联接正常工作。例如,您可能需要说“开始”实际上是在中午之后,“结束”实际上是在正午之前,对于给定的日志记录。