Вывести записи за последние сутки + отступить сутки с условиями
помогите скорректировать запрос
Вывести записи со статусом true у которых за последние сутки не было предела по лимиту (current_limit < day_limit) и тут же все со статусом true которые больше более суток (за прошлые сутки не учитываются, т.е. просто отчет через минус день)
SELECT `id`, `key` FROM `products` WHERE `status` = 1 AND
(`current_limit` < `day_limit` AND `last_use` > DATE_SUB(now(), INTERVAL 1 DAY))
AND
( DATE_SUB(now(), INTERVAL 1 DAY) < `last_use`)
last_use это timestamp
CREATE TABLE `products` (
`id` int NOT NULL,
`key` varchar(255) NOT NULL,
`status` tinyint(1) NOT NULL,
`day_limit` int NOT NULL,
`current_limit` int NOT NULL,
`last_use` timestamp NOT NULL,
`comment` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `products` (`id`, `key`, `status`, `day_limit`, `current_limit`, `last_use`, `comment`) VALUES
(5, 'key1', 1, 30, 0, '2022-07-19 21:00:00', 'test'),
(6, 'key2', 1, 30, 30, '2022-07-21 21:00:00', 'test'),
(7, 'key3', 1, 30, 5, '2022-07-23 07:34:51', 'sdsa');
ALTER TABLE `products`
ADD PRIMARY KEY (`id`);
ALTER TABLE `products`
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
COMMIT;
Ответы (1 шт):
Автор решения: Andrew Nikolaev
→ Ссылка
Если я всё правильно понял, то нужно AND на OR поменять
SELECT `id`, `key`
FROM `products`
WHERE `status` = 1 AND
(`current_limit` < `day_limit` AND
`last_use` > DATE_SUB(@CurrentDay, INTERVAL 1 DAY))
OR
(`last_use` < DATE_SUB(@CurrentDay, INTERVAL 1 DAY))