Есть таблица клиентов:
CREATE TABLE `clients` (
`id` int(11) NOT NULL,
`name` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
`company_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_clients_1_idx` (`company_id`),
CONSTRAINT `fk_clients_1` FOREIGN KEY (`company_id`) REFERENCES `companys` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
И таблица задач по клиентам (у одного клиента может быть >0 задач, или null):
CREATE TABLE `tasks` (
`id` int(11) NOT NULL,
`name` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
`deadline` datetime DEFAULT NULL,
`dt` datetime DEFAULT CURRENT_TIMESTAMP,
`client__id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Необходимо вывести клиентов отсортированных по полю deadline в tasks. С условием deadline >= NOW() (при этом так же их может быть >1, но должна показаться ближайшая).
Вот базовый запрос:
select * from clients
left join tasks ON tasks.client_id=clients.id
group by clients.id;
Как-то так (пример https://paiza.io/projects/hQF7wYJbIDZGgK9150as_A?language=mysql )
SELECT clients.*, tasks.*
FROM clients
JOIN (
SELECT client__id, MIN(deadline) as deadline
FROM tasks
WHERE deadline >= NOW()
GROUP BY client__id
) minTasks ON clients.id = minTasks.client__id
LEFT JOIN tasks ON tasks.client__id = clients.id AND minTasks.deadline = tasks.deadline
ORDER BY tasks.deadline ASC;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет, недавно начал работу с вью и возник такой вопрос - можно ли производить какие-то операции над расчетными во вью колонками? Например...
Использую WYSIWYG редактор summernote, в админ панеле благодаря редактору создаю текст (описание продукта), этот текст хранится в базе данных