У меня есть таблица, которая состоит из уникального идентификатора и нескольких других атрибутов. Он держит «графики». Затем у меня есть другая таблица, в которой содержится список всех случаев, когда каждый график имеет или будет «срабатывать». Это не точная схема, но она близка:
create table schedule (
id varchar(40) primary key,
attr1 int,
attr2 varchar(20)
);
create table schedule_times (
id varchar(40) foreign key schedule(id),
fire_date date
);
Я хочу запросить таблицу расписания, получая атрибуты, а также следующие и предыдущие значения fire_dates в Java, иногда упорядочивая их по одному из атрибутов, но иногда упорядочивая их по предыдущим fire_date или следующим fire_date Упорядочить по атрибутам легко, я просто вставляю «упорядочить по» в строку, пока строю свое подготовленное утверждение. Я даже не уверен, как выбрать последнюю дату fire_date и следующую в одном запросе - я знаю, что могу найти следующую дату fire_date для данного идентификатора, выполнив
SELECT min(fire_date)
FROM schedule_times
WHERE id = ? AND
fire_date > sysdate;
и аналогичная вещь для предыдущей даты fire_date с использованием max()
и fire_date < sysdate
. Я просто рисую пробел о том, как включить это в один выбор из расписания, чтобы я мог получить как следующую, так и предыдущую дату fire_date за один снимок, а также как упорядочить по любому из этих атрибутов.