Как получить результаты MySQL для нескольких диапазонов дат? - PullRequest
1 голос
/ 25 января 2012

Я уверен, что у кого-то будет очень простой ответ на этот вопрос, но я не могу решить его ради своей жизни: у меня есть 3 таблицы, которые выглядят примерно так:

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

(Связи находятся на столбцах с таким же именем здесь)

Используя эти таблицы, как получить всю историю журналов данного автомобиля (события и состояния), даже если он имеетБыло ли установлено несколько регистраторов в разное время?

Я знаю, что это можно сделать с помощью курсора, но поскольку это действительно заданная операция (получите набор регистраторов, которые были прикреплены к транспортному средству, затем получите отчеты окаждый регистратор, использующий заданный диапазон дат для этого регистратора)

РЕДАКТИРОВАТЬ: Регистраторы могут использоваться более чем в одном транспортном средстве в течение срока их службы, отсюда и включение дат.* Спасибо

Гарет

1 Ответ

1 голос
/ 25 января 2012

Вы можете сделать это так:

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 = ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...