0

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

我有以下表格:

客户表:

id | name | ...

单位表:

id | name | ...

出租表:

id | start_date | end_date | unit_id_fk | customer_id_fk

日志表:

id | unit_id_fk | datetime | data1 | data2

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

4

1 回答 1

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

于 2013-03-02T20:35:59.533 回答