Мне было очень сложно придумать описательное название проблемы, поэтому я приведу немного контекста.
У нас есть список лодок и список доков. Лодки могут быть переведены из одного дока в другое в указанное c время или вообще не могут быть в доке. Я пытаюсь выяснить, какие лодки находятся в определенном c доке в данный момент времени.
Вот упрощенный SQL, чтобы проиллюстрировать модель данных
CREATE TABLE `stackoverflow` (
`boat_id` int(11) NOT NULL,
`dock_id` int(11) DEFAULT NULL,
`startingAt` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `stackoverflow` (`boat_id`, `dock_id`, `startingAt`)
VALUES
(1, 1, '2020-01-01 00:00:00'),
(1, 2, '2020-02-01 00:00:00'),
(1, 3, '2020-03-01 00:00:00'),
(2, 2, '2020-01-01 00:00:00'),
(2, NULL, '2020-03-01 00:00:00');
Ожидаемый результат для дока 1 и даты 2020-01-15 будет 1
.
Ожидаемый результат для дока 2 и даты 2020-02-15 будет 1, 2
.
Я пробовал много вещей, включая необычные соединения, но не могу заставить их работать. Любая помощь с благодарностью!