Имея этот набор данных:
CREATE TABLE IF NOT EXISTS `details` (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`item` INT(6) NOT NULL,
`dateOut` DATE,
`dateIN` DATE
);
INSERT INTO details VALUES
(1,1, '2020.04.11', '2020.04.11'),
(2,1, '2020.04.12', '2020.04.12'),
(3,1, '2020.04.13', '2020.03.11'),
(4,1, '2020.04.13', '2020.04.13'),
(5,1, '2020.04.14', '2020.03.11');
скрипка . Можно ли получить этот результат в mysql / php (laravel):
2020-04-11 => [id: 1,3,5]
2020.04.12 => [id: 2]
2020.04.13 => [id: 4]
Значение, где dateIN <= min(dateOut)
группирует значения, затем с оставшимися значениями (удаляет первую группу из набора ) повторить.
Итак, первый раз min (dateOut) равен 2020-04-11
. Идентификаторы: 1,3,5
имеют dateIn
<= <code>2020-04-11, поэтому я сгруппировал их. Удалите id 1,3,5
из исходного набора.
Тогда для оставшихся значений min (dateOut) будет 2020-04-12
, и только Id: 2
имеет dateIn
<= <code>2020-04-12. Удалите id 2
.
Тогда для оставшихся значений min (dateOut) будет 2020-04-13
, и только Id: 4
имеет dateIn
<= <code>2020-04-13. Удалите id 4
и т. Д., Пока все значения не будут сгруппированы.